ホームページ >バックエンド開発 >Python チュートリアル >Python の `sys.path` はどのようにして初期値を取得するのでしょうか?

Python の `sys.path` はどのようにして初期値を取得するのでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 13:35:26711ブラウズ

How does Python's `sys.path` get its initial values?

Python の sys.path はどこで初期値を取得しますか?

Python の sys.path の初期化には、インテリジェントに実行しようとする複雑なプロセスが含まれます。モジュールをインポートするための最も関連性の高いパスを決定します。手順の詳細な内訳は次のとおりです。

1. Python の位置の特定

Python は、シンボリック リンクを解決し、オペレーティング システムからの情報を活用することで、物理的な位置を確認します。この値は sys.executable.

2 に割り当てられます。 sys.exec_prefix および sys.prefix の初期化

sys.executable を含むディレクトリまたは 1 つ上のレベルに pyvenv.cfg ファイルが存在する場合、その内容が検査されます。

  • Linux および Mac: ホーム構成オプションが指定されている場合、sys.prefix の初期値として sys.executable ディレクトリが置き換えられます。
  • Windows: PYTHONHOME 環境変数が優先されます。設定されている場合、sys.prefix と sys.exec_prefix が設定されます。ただし、pyvenv.cfg ファイルにホーム設定が含まれている場合は、PYTHONHOME 値がオーバーライドされます。

それ以外の場合、sys.exec_prefix および sys.prefix は、sys.executable またはpyvenv.cfg ディレクトリ。このプロセスで使用される具体的なランドマーク ファイルは、lib/python/dyn-load および lib/python/os.py.

3 です。 sys.path の初期設定

  • 実行中のスクリプトのディレクトリが sys.path に含まれます。
  • PYTHONPATH 環境変数の内容が追加されます。特定のシナリオ (例: applocal=true の Windows など)。
  • zip ファイル パス (Linux/Mac の lib/python35.zip または os.path.join(os.dirname(sys.executable))、 Windows の「python.zip」) が追加されます。

追加のプラットフォーム固有の反復手順:

  • Windows (非-applocal): PythonPath に関連するレジストリ キーが検査され、sys.path に追加されます。
  • Windows (不明な sys.prefix 付き): sys 内のディレクトリを通じて検索が実行されます。可能であれば、動的に sys.prefix を決定するためのランドマーク ファイルの .path。
  • Mac および Linux: sys.exec_prefix の値が sys.path.
  • に追加されます。 Windows: PYTHONPATH 内のコンパイル時に定義されたパスは、sys.prefix に相対的に追加されます (動的に見つかった場合)。
  • すべてのプラットフォーム: Python はサイト モジュールをロードします。これにより、包括的な検索プロセスに基づいて、さらにパスが sys.path に動的に追加されます。

この詳細なアルゴリズムにより、Python はシステム定義のパスとユーザー指定の環境変数を注意深く組み合わせて、インテリジェントで柔軟な検索を提供します。モジュールをインポートするためのパス。

以上がPython の `sys.path` はどのようにして初期値を取得するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。