从Python AST生成.pyc文件?
我想知道怎么从Python的抽象语法树(AST)生成一个.pyc文件,这样我就可以在Python中导入这个文件。
我用compile
函数创建了一个代码对象,然后把co_code
这个属性写入了一个文件。但是当我尝试从Python中导入这个文件时,出现了一个错误,提示ImportError: Bad magic number in output.pyc
。
2 个回答
2
compile
这个标准函数在Python 2.x和Python 3.x中都可以使用。可是,你会发现这两个版本在AST(抽象语法树)的表现上差别很大,所以要对此有所准备。
19
这个解决方案可以参考一下 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)