编译pyc文件——python无法运行其它版本编译的pyc文件的情况
2014-03-10 15:42
771 查看
我之前学习python的时候就知道pyc文件,它不但可以提高速度,还可以一定的隐藏代码细节(可以反编译)。另外,python源文件和pyc文件都是平台无关的。
但是,我发布一个程序包的时候发现事先编译好的pyc文件提示“magic number”错误。
这个“魔法数”控制一个文件是否可以真正运行,比如可以给一个文本文件增加可执行权限,但这个文件是无法执行的。因为文本文件没有魔法数。查看魔法数的方法是用od命令查看一个文件,第一个数字就是了,不同的系统拥有不同的魔法数。
后来发现,我编译pyc文件的python版本是2.7的,而执行pyc文件的python版本是2.4.3。因为不同python版本无法使用其它python版本编译的pyc文件。
这种情况不知道后续的版本会不会解决,目前有些程序会要求特定的python版本就有这个原因吧。
编译pyc文件:python -m py_compile test.py
优化编译pyc文件: python -O -m py_compile test.py
优化编译pyc文件,并删除文档字符串: python
-OO -m py_compile test.py
但是,我发布一个程序包的时候发现事先编译好的pyc文件提示“magic number”错误。
这个“魔法数”控制一个文件是否可以真正运行,比如可以给一个文本文件增加可执行权限,但这个文件是无法执行的。因为文本文件没有魔法数。查看魔法数的方法是用od命令查看一个文件,第一个数字就是了,不同的系统拥有不同的魔法数。
后来发现,我编译pyc文件的python版本是2.7的,而执行pyc文件的python版本是2.4.3。因为不同python版本无法使用其它python版本编译的pyc文件。
这种情况不知道后续的版本会不会解决,目前有些程序会要求特定的python版本就有这个原因吧。
编译pyc文件:python -m py_compile test.py
优化编译pyc文件: python -O -m py_compile test.py
优化编译pyc文件,并删除文档字符串: python
-OO -m py_compile test.py
相关文章推荐
- python编译运行检错神器(将.py文件编译成.pyc文件)
- 文件更新后, 编译也成功,但无法调试,exe运行后还是原来的版本not found or not built by the last incremental link; performing full link
- 把python代码编译成exe文件,及脱离python环境运行py
- Python运行时,如何不生成.pyc文件
- Python编译成单独运行的exe文件
- andrioid编译运行UnsatisfiedLinkError错误,无法找到.so文件!
- python 反编译 将pyc 文件编译成 py源文件
- 编译项目:“无法将文件“Web.dll”复制到运行目录
- Python什么情况下会生成pyc文件?
- Cocos2d-x教程(19)-cocos2d-x.xcodeproj-2.2.x版本对cocos2dx文件的引用以及Cocos2d-x 2.2.0版本后项目拷贝出来无法运行的原因
- linux gcc 编译的so文件 运行时无法找到 错误:cannot open shared object file: No such file or directory
- vs2013编译caffe中添加*.cu文件无法编译的情况
- 你是不是也经常遇到Xcode编译成功,但又无法运行的情况?
- cmd可以编译java文件,运行时提示找不到或无法加载主类
- linux1.0内核编译为elf文件格式,导致无法运行
- 【解决】SOUI向导生成项目(VC2013以上版本编译时)无法运行XP解决
- pyc文件反编译到Python源码
- Centos6.5 编译安装python3.5版本,无法使用退格键方向键删除键等
- javac编译成功,用java运行class文件出现“找不到或无法加载主类”
- 运行VS可执行文件 360提示有菠萝影音插件想要捆绑 导致程序无法正常编译和运行解决办法