如何从Python AST生成.pyc文件,以便我可以从Python导入文件?
我使用compile
创建了一个代码对象,然后将co_code
属性写入文件,但是当我尝试从Python导入文件时,我得到了ImportError: Bad magic number in output.pyc
答案 0 :(得分:17)
可以从py_compile
模块改编解决方案:
import marshal
import py_compile
import time
import ast
codeobject = compile(ast.parse('print "Hello World"'), '<string>', 'exec')
with open('output.pyc', 'wb') as fc:
fc.write('\0\0\0\0')
py_compile.wr_long(fc, long(time.time()))
marshal.dump(codeobject, fc)
fc.flush()
fc.seek(0, 0)
fc.write(py_compile.MAGIC)
答案 1 :(得分:2)
compile
标准函数为Python 2.x和Python 3.x提供此函数。但是,你会发现2.x和3.x之间的AST表示是完全不同的,所以要做好准备。