繁体   English   中英

如何从3.x编译2.x的python代码

[英]How to compile python code for 2.x from 3.x

我想从3.2脚本为目标2.7编译python代码。

下面的工作正常进行编译。 但是在执行时,由于编译和目标python版本不同,我显然会收到“错误的幻数错误”。

for fn in os.listdir(source):
    srcfile = ...
    ...
    destfile = ... + ".pyc"
    #print(srcfile, destfile)
    py_compile.compile(srcfile, destfile)   # <-- 

是否可以不从3.2内部执行2.7 python? 有没有办法提及目标版本?

谢谢。

CPython二进制文件无法针对不同的Python版本进行交叉编译。 通过使用所需的目标版本派生到Python解释器并直接从命令行使用compileall模块,可能是最好的选择。

compile功能,诸如compileallast类的模块等compileall公开了解析器和编译器,这些解析器和编译器包含在每个Python版本中。 Python 3.2没有2.7代码的编译器。

而且,如果您希望将3.2代码编译为2.7字节代码……一般来说,这甚至是不可能的,因此显然Python 3.2无法做到这一点。

您可以尝试将所有2.7编译器机制移植到Python(PyPy是一个很好的起点),然后在3.2下运行。 但是,要避免与Python 3.2一起安装Python 2.7,需要进行大量工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM