我有一个已编译的 Python 文件,path/program.pyc
。
我想用我当前的 globals()
和 locals()
来执行它。我试过:
with open('path/program.pyc','rb') as f:
code = f.read()
exec(code, globals(), locals())
更具体地说,我想要的是:
a.py:
a = 1
# somehow run b.pyc
b.py:
print(a)
当我运行 a.py
时,我想看到输出:1
。
实际上 execfile()
完全符合我的要求,但它仅适用于 .py
文件而不适用于 .pyc
文件。我正在寻找适用于 .pyc
文件的 execfile()
版本。
最佳答案
可能有更好的方法,但使用 uncompyle2获取源代码并执行将执行您需要的操作:
a = 1
import uncompyle2
from StringIO import StringIO
f = StringIO()
uncompyle2.uncompyle_file('path/program.pyc', f)
f.seek(0)
exec(f.read(), globals(), locals())
从 a
运行 b.pyc
应该输出 1
。
关于python - 如何执行编译后的python代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259786/