4

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

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

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

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

一个.py

a = 1
# somehow run b.pyc

b.py

print(a)

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

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

4

2 回答 2

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())

b.pyca应该输出运行 1

于 2015-08-28T00:32:46.853 回答
-3

利用__import__

请注意,您需要使用标准的 python 包符号而不是路径,并且您需要确保您的文件在sys.path

类似的东西__import__('path.program', globals(), locals())应该可以解决问题。

于 2015-08-27T22:08:16.013 回答