私のコードは:
import scriptlib.abc
import scriptlib.xyz
def foo():
... some operations
しかし、scriptlibは他のディレクトリにあるため、環境変数「PYTHONPATH」にそのディレクトリを含める必要があります。
とにかく、インポート文が次のように実行される前に、環境変数「PYTHONPATH」にscriptlibディレクトリを最初に追加することができますか?
import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz
def foo():
... some operations
その場合、値はそのコマンドのプロンプトのみですか、それともグローバルですか?
前もって感謝します
これにより、Pythonプロセス/インスタンス(実行中の実行可能ファイル)にパスが追加されます。他のPythonプロセスのパスは変更されません。実行中の別のPythonプログラムのパスは変更されず、プログラムを終了して再度実行した場合、パスには以前に追加したものが含まれません。あなたがしていることは一般的に正しいです。
set.py:
import sys
sys.path.append("/tmp/TEST")
loop.py
import sys
import time
while True:
print sys.path
time.sleep(1)
実行:python loop.py &
これにより、STDOUTに接続されたloop.pyが実行され、バックグラウンドで実行が継続されます。その後、python set.py
を実行できます。それぞれに異なる環境変数のセットがあります。 loop.py
はset.py
の環境を変更しないため、loop.py
からの出力は変更されないことに注意してください。
インポートに関する注意
Pythonのインポートは、他の言語と同様に動的です。静的リンクは行われていません。インポートは、sys.path.append...
と同様に実行可能な行です。
ドキュメントにも記載されているとおり here 。Python X.X/Lib
に移動し、site.py
にこれらの行を追加して、
import sys
sys.path.append("yourpathstring")
これによりsys.path
が変更され、すべてのロードでその値が含まれるようになります。
述べたように ここsite.py
について、
このモジュールは初期化中に自動的にインポートされます。このモジュールをインポートすると、サイト固有のパスがモジュール検索パスに追加され、いくつかのビルトインが追加されます。
sys.path
にパスを追加する他の可能な方法については、 これらのドキュメント を参照してください