【发布时间】:2015-08-27 21:31:10
【问题描述】:
我有一个编译好的 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() 版本。
【问题讨论】:
-
你想在 a 中运行 b 的代码吗?
-
@PadraicCunningham 是的,但我只有
b.pyc而不是b.py。 -
一个简单的方法是解压缩 pyc,因为小文件需要很少的开销。 github.com/wibiti/uncompyle2
-
@PadraicCunningham 我明白了。谢谢。但是,如果您无法立即使用
.pyc而无需解压缩,这不是也让您感到不安吗? Python 应该让事情变得更容易,而不是更难。对吗? -
我想这是因为从源代码到字节码比从字节码到源代码要容易得多,尽管这并不是说它不能完成,我只是想到 uncompyle 当我看到这个问题,我用过很多次了,一直都很好用。