如何执行编译后的python代码

Sai*_*ait 5 python pyc

我有一个已编译的 Python 文件,path/program.pyc.

我想用我当前的globals()和来执行它locals()。我试过:

with open('path/program.pyc','rb') as f:
   code = f.read()
   exec(code, globals(), locals())
Run Code Online (Sandbox Code Playgroud)

更具体地说,我想要的是:

a.py

a = 1
# somehow run b.pyc
Run Code Online (Sandbox Code Playgroud)

b.py

print(a)
Run Code Online (Sandbox Code Playgroud)

当我运行时a.py,我想看到输出:1

实际上execfile()正是我想要的,但它只适用于.py文件而不适用于.pyc文件。execfile()我正在寻找适用于文件的版本.pyc

Pad*_*ham 3

可能有更好的方法,但使用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())
Run Code Online (Sandbox Code Playgroud)

b.pyca应该输出运行 1