python bad magic number:b‘\x03\xf3\r\n‘:ImportError

当在Python版本更改之间保留旧的.pyc文件时,这是由Python 2.x .pyc文件进入新的Python 3.x项目引起的。

解决方法find . -name \*.pyc -delete

python文件*.py运行的时候会产生对应的*.pyc文件,这个是python的解释器把*.py文件编译得到的二进制文件,完全可以*.py文件一样运行,功能上没有任何差别。

很多厂商为了防止源码外泄,经常会采用把*.py源码文件编译后删除,完全使用*.pyc文件运行自己的产品。当然了,你打开*.pyc文件是一对让你崩溃的东西,这样就很好的起到了源码保护的作用。

但是这里要说到的一个问题是:当你在别的机器上(即不是编译py文件的机器)运行python *.pyc时可能会报错:

00000000  03 f3 0d 0a 6b af be 5d  63 00 00 00 00 00 00 00 |....k..]c.......|
00000010  00 01 00 00 00 40 00 00  00 73 27 00 00 00 64 00 |.....@...s'...d.|
00000020  00 5a 00 00 64 01 00 5a  01 00 64 02 00 84 00 00 |.Z..d..Z..d.....|
00000030  5a 02 00 65 02 00 83 00  00 5a 03 00 65 03 00 47 |Z..e.....Z..e..G|
00000040  48 64 03 00 53 28 04 00  00 00 74 06 00 00 00 73 |Hd..S(....t....s|
00000050  74 72 69 6e 67 69 0a 00  00 00 63 00 00 00 00 01 |tringi....c.....|
00000060  00 00 00 01 00 00 00 43  00 00 00 73 0f 00 00 00 |.......C...s....|
00000070  64 01 00 47 48 64 02 00  7d 00 00 7c 00 00 53 28|d..GHd..}..|..S(|
00000080  03 00 00 00 4e 73 0f 00  00 00 70 79 63 20 66 69 |....Ns....pyc fi|
00000090  6c 65 20 66 6f 72 6d 61  74 73 0a 00 00 00 6e 65 |le formats....ne|
000000a0  77 20 73 74 72 69 6e 67  28 00 00 00 00 28 01 00 |w string(....(..|
000000b0  00 00 74 02 00 00 00 73  73 28 00 00 00 00 28 00 |..t....ss(....(.|
000000c0  00 00 00 73 07 00 00 00  6d 61 69 6e 2e 70 79 74|...s....main.pyt|
000000d0  04 00 00 00 66 75 6e 63  05 00 00 00 73 06 00 00 |....func....s...|
000000e0  00 00 01 05 01 06 01 4e  28 04 00 00 00 74 01 00 |.......N(....t..|
000000f0  00 00 73 74 01 00 00 00  69 52 02 00 00 00 74 02 |..st....iR....t.|
00000100  00 00 00 73 32 28 00 00  00 00 28 00 00 00 00 28 |...s2(....(....(|
00000110  00 00 00 00 73 07 00 00  00 6d 61 69 6e 2e 70 79|....s....main.py|
00000120  74 08 00 00 00 3c 6d 6f  64 75 6c 65 3e 02 00 00 |t....<module>...|
00000130  00 73 08 00 00 00 06 01  06 02 09 04 09 01       |.s............|

\x03\xf3 前4个字节magic number对应不同的python版本

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值