当在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版本
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/48900.html