4

コンパイル済みの Python ファイルpath/program.pyc.

globals()現在のandで実行したい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.pycexecfile().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.pycから実行 すると、aが出力されます1

于 2015-08-28T00:32:46.853 に答える