7

LinuxでPyInstaller2.0を使用してPythonスクリプトのバイナリバージョンを作成しようとしています。私が走るとき:

$ python pyinstaller.py myscript.py

エラーが発生します:

8907 INFO: Looking for Python library libpython2.7.so
Traceback (most recent call last):
...
  File "pyinstaller.py", line 91, in <module>
    raise IOError("Python library not found!")
IOError: Python library not found!

これはどのように修正できますか?

使ってます:

Linux#98-Ubuntu x86_64 GNU / Linux

Python2.7を使用。システムには他のPythonがありますが、次のように設定しています。

alias python="python2.7"

私が使用しているサーバーには、Python 2.7が日常的に使用されており、機能しているなどの機能しか/usr/lib/python2.6ありませ/usr/lib/python2.7ん。そのため、ライブラリを見つけるのに問題がある理由はわかりません。があります/usr/local/lib/libpython2.7.a

4

3 に答える 3

6

私が使用しているサーバーには、/ usr / lib / python2.6のみがあり、/ usr / lib / python2.7はありませんが、python 2.7は私が日常的に使用しており、機能しているなどの理由でわかりません。そのライブラリを見つけるのは問題になるでしょう。/usr/local/lib/libpython2.7.aがあります。

ない場合はlibpython2.7.so、もちろん、そのライブラリを見つけるのは問題になります。

Pythonインタープリターを使用できる理由は、おそらく静的にリンクされているためです。

これを解決するには2つの方法があります。

まず、Python2.7の共有ライブラリをインストールするだけです。Python 2.6などに付属している古いバージョンのUbuntuを使用していて、python2.7パッケージから2.7をインストールした場合、これはインストールの問題ですlibpython2.7

他のソースから2.7を入手した場合、Ubuntulibpython2.7パッケージは明らかに機能しません。または、の2番目のコピーをインストールすることで機能しpython2.7、既存のファイルの一部を上書きして、間違いなく混乱させます。いずれにせよ、それをしないでください。既存の2.7用に残りのPythonを入手するか、その2.7をアンインストールしてUbuntuパッケージを使用します。(一部のPythonディストリビューションでは、共有ライブラリをインストールすると、静的にリンクされたものではなく動的にリンクされたPython実行可能ファイルを取得するため、「残りを取得」することはできません。その場合、ほとんどアンインストールする必要があります。再インストールします。)

PyInstaller次に、のstatic-libサポートを使用できます。詳細についてはチケット420を参照してください。ただし、これが有効になっている場合、PyInstallerはプラットフォームにあるはずなのに見つからないと判断した場合、代わりに静的にリンクをlibpython2.7.so探します。libpython2.7.a前回これが必要だったとき、トランクにチェックインされていませんでした。チケットを一目見ただけで、パッチが含まれているように見えますが、デフォルトPyInstallerのビルドでは無効になっており、マイルストーンは3.0に設定されているため、PyInstallerこれを機能させるには手動でビルドする必要があります。

最後にもう1つ:libpython2.7.soを使用ている可能性がありますが、パスのどこにも/opt/python27/lib存在しない、奇妙な場所にインストールされているだけですが、から何かを取得するために明示的に構築されているため、見つけることができます。この種の問題は、LinuxユーザーではなくMacPortsまたはFinkを使用するMacユーザーにのみ問題になる傾向がありますが、不可能ではありません。これが問題であると思われる場合は、dlテーブルを参照してください。/opt/python27/usr/local/bin/python27/opt/python27/usr/local/bin/python27

于 2013-02-04T00:03:00.247 に答える
1

2つのオプションがあります:libpython*.soがシステムに存在するか存在しないかです。ルートディレクトリから始まる任意の検索ユーティリティで確認できます。ファイルがすでに存在しているのにPyInstallerで見つからない場合:最も一般的なアドバイスは、PyInstallerコードを開いて、このライブラリの検索を担当するモジュールを見つけることです。簡単なエディタで実行できます。このモジュールに移動して編集し、特定のシステムの何が問題になっているのかを理解してください。コードは単純で時期尚早です。理由を理解するには約5分かかります。私の場合、LD_LIBRARY_PATH = / usr / local / libをユーザープロファイル(.bash_profile)に追加し、この*.soファイルが内部にあることを確認しました。ファイルがシステムにない場合、またはバージョンが正しくない場合は、Pythonを再インストールしてください。

于 2015-07-15T09:00:24.267 に答える
1

@abarnertがすでに述べたように、問題はPythonの静的コンパイルにあるようです。この問題を解決するには、Pythonを再コンパイルする必要がありますが、今回はフラグ--enable-sharedを追加します

    [root@machine ~]# ./configure --prefix=/usr/local --enable-shared
    [root@machine ~]# make && make altinstall

これを行うと、要求されたライブラリ(libpython2.7.so.1.0)が/ usr / local / libパスの下にあるので、そのフォルダーを$LD_LIBRARY_PATH環境変数に追加することを忘れないでください。

    [root@machine tmp]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
于 2015-09-16T15:06:39.617 に答える