ホームページ  >  記事  >  バックエンド開発  >  Python はどのようにして sys.path リストを初期化しますか?

Python はどのようにして sys.path リストを初期化しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 19:05:30261ブラウズ

How does Python initialize the sys.path list?

Python の sys.path はどこから初期化されますか?

Python がインポートするモジュールを検索するディレクトリが含まれる Python の sys.path初期値を決定するために複雑な初期化プロセスが実行されます。設定方法の内訳は次のとおりです。

sys.executable の決定

  • Python はファイルシステム上の物理的な場所を特定し、それを sys の値として使用します。 .executable.

sys.exec_prefix および sys.prefix 初期化

  • Python は、sys.executable と同じディレクトリにある pyvenv.cfg ファイルを読み取ります。
  • ファイルが存在する場合、次の情報が抽出されます:

    • Windows の場合: "applocal = true" の場合、sys.prefix は次のように設定されます。 sys.executable を含むディレクトリ。それ以外の場合は、「home = 」が使用されます。ディレクティブ。
    • Linux/Mac の場合: Sys.exec_prefix は「home = 」に設定されます。指令。 PYTHONHOME 環境変数が存在しない限り、Sys.prefix もこの値に設定されます。
  • pyvenv.cfg が存在しないか、必要な情報が含まれていない場合、Python は sys.exec_prefix を決定しようとします。

sys.path 初期化

  1. Python は、実行されているスクリプトのディレクトリを sys.path に追加します。
  2. Linux/Mac では、設定されている場合、PYTHONPATH 環境変数を追加します。
  3. これには、 zip ファイル パス (/lib/python35.zip または path/to/python.zip)。
  4. Windows では、pyvenv.cfg に「applocal = true」を指定しないと、「HK_CURRENT_USERSoftwarePythonPythonCore<」からサブキーが追加されます。 ;DLLVersion>PythonPath."
  5. Windows では、pyvenv.cfg に "applocal = true" がなく、sys.prefix が見つからなかった場合、"HK_CURRENT_USERSoftwarePythonPythonCorePythonPath." の "コア コンテンツ" が追加されます。 "
  6. Windows では、pyvenv.cfg に「applocal = true」がないと、「HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath」からサブキーが追加されます。
  7. Windows では、pyvenv に「applocal = true」がありません。 .cfg を作成し、sys.prefix が見つからなかった場合は、「HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath」の「コア コンテンツ」を追加します。
  8. Windows では、PYTHONPATH が設定されておらず、プレフィックスが見つからず、レジストリ キーもありません存在する場合、PYTHONPATH の相対的なコンパイル時の値が追加されます。
  9. 動的に検出された sys.prefix に相対的なパスを PYTHONPATH コンパイル時マクロに組み込みます。
  10. Linux/Mac では、 sys.exec_prefix が追加されます。 Windows では、sys.prefix の検索に使用されるディレクトリが追加されます。
  11. Windows では、pyvenv.cfg に「applocal = true」が指定されていない場合、sys.path でランドマーク ファイルを見つけて sys.prefix を検索しようとします。 。失敗した場合、sys.prefix は空白のままになります。

サイト モジュールによる追加の変更

  • サイト モジュールは、sys.path を追加してさらに変更します。 sys.prefix、sys.exec_prefix、およびプラットフォーム固有のパスに基づくディレクトリ。
  • 構成ファイルのこれらの新しいパスを検査し、さらにパスを追加する可能性があります。

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

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