0

ローカル マシンで cxfreeze (python3.2 virtualenv 内) を使用して実行可能ファイルを作成しました。実行可能ファイルはローカル マシンで正しく実行されます。

別のターゲット マシン (同一の OS とアーキテクチャ) で実行可能ファイルを実行しようとしていますが、次のエラーが発生します。

  ...
  File "/home/chris/.virtualenvs/python3env/lib/python3.2/site-packages/psycopg2/__init__.py", line 67, in <module>
  File "ExtensionLoader_psycopg2__psycopg.py", line 18, in <module>
  ImportError: No module named None

すべての共有ライブラリの依存関係がターゲット マシンで満たされている (に従ってldd)。

トレースに基づいて、psycopg2 は共有ライブラリを_psycopg.cpython-32mu.so(ローカルにpython3.2/site-packages/psycopg2/_psycopg.cpython-32mu.so) ロードしようとしていますが、実行時にそれを見つけることができないと推測しています。

ライブラリを実行可能ファイルと同じディレクトリに配置し、LD_LIBRARY_PATH を設定しようとしましたが、どちらも (想定される) 問題を解決しませんでした。

4

1 に答える 1

0

各プロセスで実行straceした後、純粋なPythonバージョンがファイルを探しているようです_psycopg.cpython-32mu.so

open("/home/chris/.virtualenvs/python3env/lib/python3.2/site-packages/psycopg2/_psycopg.cpython-32mu.so", O_RDONLY|O_CLOEXEC) = 8

cxfreezeによって構築されたバイナリがファイルを探しているのに対してpsycopg2._psycopg.so

open("/path/to/psycopg2._psycopg.so", O_RDONLY|O_CLOEXEC) = 3

md5sumこれらのファイルが同一であることが明らかになるため、cxfreezeプロセスがダイナミックライブラリの予想される名前を変更するように見えます。このライブラリのバージョンがターゲットに正しく名前を付けていることdist、cxfreezeによって出力されるディレクトリに含まれていることに注意してください。

于 2013-01-09T16:59:44.147 に答える