Python は、PYTHONPATH
環境変数を使用して、どのフォルダでモジュールを検索するかを決定します。 を変更することで、これを操作することができますsys.path
。これは、純粋な Python モジュールではうまく機能します。ただし、モジュールが共有オブジェクト ファイルまたは静的ライブラリを使用する場合、それらは で検索されますLD_LIBRARY_PATH
(Linux の場合)。ただし、これは簡単に変更できず、私の知る限り、プラットフォームに依存します。
この問題の簡単な解決策は、もちろん環境変数を設定するか、 のようなスクリプトを呼び出すことですLD_LIBRARY_PATH=. ./script.py
が、その場合、新しいシェルを開くたびに再度設定する必要があります。また、.so
私の場合、ファイルは常にファイルと同じディレクトリにあります.py
が、別の絶対パスに移動される可能性も十分にあるため、スクリプトを呼び出すたびに自動的に設定したいと思います。
実行時にプラットフォームに依存せずに Python インタープリターがライブラリを検索するパスを編集するにはどうすればよいですか?
編集:
すでに試しましたos.environ['LD_LIBRARY_PATH'] = os.getcwd()
が、効果はありませんでした。
ベストアンサー1
更新: 以下の編集を参照してください。
私は使うだろう:
import os
os.environ['LD_LIBRARY_PATH'] = os.getcwd() # or whatever path you want
これにより、LD_LIBRARY_PATH
現在のプロセスの実行期間/存続期間のみの環境変数が設定されます。
編集:Python を起動する前にこれを設定する必要があるようです:ctypes の実行時に LD_LIBRARY_PATH を変更する
したがって、ラッパー.sh
(または.py
どうしても必要な場合は) スクリプトを使用することをお勧めします。また、@chepner が指摘したように、ファイルを標準の場所 (virtualenv 内) にインストールすることを検討してください.so
。