Heim  >  Artikel  >  Backend-Entwicklung  >  Wie initialisiert Python die sys.path-Liste?

Wie initialisiert Python die sys.path-Liste?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 19:05:30261Durchsuche

How does Python initialize the sys.path list?

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

  • Python liest die Datei pyvenv.cfg im selben Verzeichnis wie sys.executable oder ein Verzeichnis höher.
  • Wenn die Datei vorhanden ist, werden die folgenden Informationen extrahiert:

    • Unter Windows: Wenn „applocal = true“, ist sys.prefix auf gesetzt das Verzeichnis, das sys.executable enthält. Andernfalls wird „home = “ verwendet. Direktive.
    • Unter Linux/Mac: Sys.exec_prefix ist auf „home = “ gesetzt. Richtlinie. Sys.prefix wird ebenfalls auf diesen Wert gesetzt, es sei denn, die Umgebungsvariable PYTHONHOME ist vorhanden.
  • Wenn pyvenv.cfg nicht existiert oder nicht die erforderlichen Informationen enthält, versucht Python, sys.exec_prefix zu ermitteln und sys.prefix, indem Sie von sys.executable rückwärts gehen und nach bestimmten Orientierungsdateien suchen.

sys.path Initialization

  1. Python fügt das Verzeichnis des ausgeführten Skripts zu sys.path hinzu.
  2. Unter Linux/Mac fügt es die Umgebungsvariable PYTHONPATH hinzu, sofern festgelegt.
  3. Es enthält die zip-Dateipfad (/lib/python35.zip oder path/to/python.zip).
  4. Unter Windows und ohne „applocal = true“ in pyvenv.cfg werden Unterschlüssel von „HK_CURRENT_USERSoftwarePythonPythonCore< ;DLLVersion>PythonPath.“
  5. 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. „
  6. Unter Windows und ohne „applocal = true“ in pyvenv.cfg werden Unterschlüssel von „HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath“ hinzugefügt.“
  7. 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.
  8. 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.
  9. Es bindet Pfade in das PYTHONPATH-Kompilierungszeitmakro relativ zum dynamisch gefundenen sys.prefix ein.
  10. 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.
  11. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn