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 初期化
- Python は、実行されているスクリプトのディレクトリを sys.path に追加します。
- Linux/Mac では、設定されている場合、PYTHONPATH 環境変数を追加します。
- これには、 zip ファイル パス (/lib/python35.zip または path/to/python.zip)。
- Windows では、pyvenv.cfg に「applocal = true」を指定しないと、「HK_CURRENT_USERSoftwarePythonPythonCore<」からサブキーが追加されます。 ;DLLVersion>PythonPath."
- Windows では、pyvenv.cfg に "applocal = true" がなく、sys.prefix が見つからなかった場合、"HK_CURRENT_USERSoftwarePythonPythonCorePythonPath." の "コア コンテンツ" が追加されます。 "
- Windows では、pyvenv.cfg に「applocal = true」がないと、「HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath」からサブキーが追加されます。
- Windows では、pyvenv に「applocal = true」がありません。 .cfg を作成し、sys.prefix が見つからなかった場合は、「HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath」の「コア コンテンツ」を追加します。
- Windows では、PYTHONPATH が設定されておらず、プレフィックスが見つからず、レジストリ キーもありません存在する場合、PYTHONPATH の相対的なコンパイル時の値が追加されます。
- 動的に検出された sys.prefix に相対的なパスを PYTHONPATH コンパイル時マクロに組み込みます。
- Linux/Mac では、 sys.exec_prefix が追加されます。 Windows では、sys.prefix の検索に使用されるディレクトリが追加されます。
- Windows では、pyvenv.cfg に「applocal = true」が指定されていない場合、sys.path でランドマーク ファイルを見つけて sys.prefix を検索しようとします。 。失敗した場合、sys.prefix は空白のままになります。
サイト モジュールによる追加の変更
- サイト モジュールは、sys.path を追加してさらに変更します。 sys.prefix、sys.exec_prefix、およびプラットフォーム固有のパスに基づくディレクトリ。
- 構成ファイルのこれらの新しいパスを検査し、さらにパスを追加する可能性があります。
以上がPython はどのようにして sys.path リストを初期化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。