Wo wird Pythons sys.path initialisiert?
Pythons sys.path, der die Verzeichnisse enthält, in denen Python nach zu importierenden Modulen sucht, durchläuft einen komplexen Initialisierungsprozess, um seine Anfangswerte zu ermitteln. Hier ist eine Aufschlüsselung der Einrichtung:
sys.executable-Bestimmung
- Python lokalisiert seinen physischen Speicherort im Dateisystem und verwendet ihn als Wert für sys .executable.
sys.exec_prefix und sys.prefix Initialisierung
sys.path Initialization
- Python fügt das Verzeichnis des ausgeführten Skripts zu sys.path hinzu.
- Unter Linux/Mac fügt es die Umgebungsvariable PYTHONPATH hinzu, sofern festgelegt.
- Es enthält die zip-Dateipfad (/lib/python35.zip oder path/to/python.zip).
- Unter Windows und ohne „applocal = true“ in pyvenv.cfg werden Unterschlüssel von „HK_CURRENT_USERSoftwarePythonPythonCore< ;DLLVersion>PythonPath.“
- Unter Windows und ohne „applocal = true“ in pyvenv.cfg und wenn sys.prefix nicht gefunden wurde, werden die „Kerninhalte“ von „HK_CURRENT_USERSoftwarePythonPythonCorePythonPath“ hinzugefügt. „
- Unter Windows und ohne „applocal = true“ in pyvenv.cfg werden Unterschlüssel von „HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath“ hinzugefügt.“
- Unter Windows und ohne „applocal = true“ in pyvenv .cfg, und wenn sys.prefix nicht gefunden wurde, werden die „Kerninhalte“ von „HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath“ hinzugefügt.
- Unter Windows und wenn PYTHONPATH nicht festgelegt ist, kein Präfix gefunden wurde und keine Registrierungsschlüssel vorhanden sind vorhanden, fügt es den relativen Kompilierzeitwert von PYTHONPATH hinzu.
- Es bindet Pfade in das PYTHONPATH-Kompilierungszeitmakro relativ zum dynamisch gefundenen sys.prefix ein.
- Unter Linux/Mac es fügt sys.exec_prefix hinzu. Unter Windows wird das Verzeichnis hinzugefügt, das für die Suche nach sys.prefix verwendet wird.
- Unter Windows und ohne „applocal = true“ in pyvenv.cfg versucht es, sys.prefix zu finden, indem es Orientierungsdateien in sys.path findet . Wenn dies nicht erfolgreich ist, bleibt sys.prefix leer.
Zusätzliche Änderung durch das Site-Modul
- Das Site-Modul ändert sys.path durch Hinzufügen weiter Verzeichnisse basierend auf sys.prefix, sys.exec_prefix und plattformspezifischen Pfaden.
- Es überprüft diese neuen Pfade auf Konfigurationsdateien und fügt möglicherweise weitere Pfade hinzu.
Das obige ist der detaillierte Inhalt vonWie initialisiert Python die sys.path-Liste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!