7

を使用して Python コードをバイナリにコンパイルしたいのですpyinstallerが、hidden importブロックされます。たとえば、次のコードpsutilは CPU カウントをインポートして出力します。

# example.py
import psutil
print psutil.cpu_count()

そして、コードをコンパイルします。

$ pyinstaller -F example.py --hidden-import=psutil

下で出力を実行するとdist

ImportError: cannot import name _psutil_linux

それから私は試しました:

$ pyinstaller -F example.py --hidden-import=_psutil_linux

それでも同じエラーです。pyinstall のマニュアルを読みましたが、hidden import. これの詳細な例はありますか?または、少なくともコンパイルして実行する例example.pyですか?

ENV:

  • OS: Ubuntu 14.04
  • パイソン: 2.7.6
  • pyインストーラー:2.1
4

4 に答える 4

0

pyinstall設定が難しいcx_freezeですが、Windows (直接ダウンロードできますexe) と Linux の両方をサポートしているほうがよいでしょう。Windowsexample.pyでは、Python をデフォルト パス ( C:\\Python27)にインストールしたとします。

$ python c:\\Python27\\Scripts\\cxfreeze example.py -s --target-dir some_path

これcxfreezeは python スクリプトです。 で実行する必要がありますpython。ビルド ファイルは下にありますsome_path(多くのxxx.pydとがありxxx.dllます)。

Linux では、次を実行します。

$ cxfreeze example.py -s --target-dir some_path

また、 の下に多数の files( xxx.so)を出力しますsome_path

の欠点は、cx_freezeすべてのライブラリをターゲット ディレクトリにラップしないことです。これは、異なる環境でビルドをテストする必要があることを意味します。ライブラリが不足している場合は、それらをターゲット ディレクトリにコピーするだけです。例外的なケースとしては、たとえば、Centos 6 で Python をビルドし、Centos 7 で実行すると libc.so.6 がないとスローされる場合があります。Centos 7 と Centos 6 の両方で Python をコンパイルする必要があります。

于 2015-07-09T09:14:52.487 に答える