Skip to content

Prüfen und Hinzufügen des Modulsuchpfades mit sys.path in Python

Python

In Python WIRD die Liste der Verzeichnisse, die beim Importieren von Modulen und Paketen mit import durchsucht Werden, der Modulsuchpfad, in sys.path gespeichert.

Dieser Artikel genau, wie SIE sterben aktuelle Modulsuchpfade überprüfen und neue hinzufügen.

  • Überprüfen Sie den Modulsuchpfad mit sys.path
  • Neuen Modulsuchpfad mit sys.path.append() hinzufügen
  • Fügen Sie einen neuen Modulsuchpfad mit PYTHONPATH hinzu
  • Neuen Modulsuchpfad mit Pfadkonfigurationsdatei (.pth) hinzufügen

Siehe den folgenden Artikel für die klassische Verwendung des Imports.

Überprüfen Sie den Modulsuchpfad mit sys.path

Der aktuelle Modulsuchpfad WIRD in sys.path gespeichert.

sys.path ist eine Liste von Zeichenfolgen, die den Suchpfad des Moduls angeben. Sie können die Elemente mit print() überprüfen.

In diesem Beispiel wird pprint verwendet, um die Lesbarkeit zu verbessern.

import sys
import pprint

pprint.pprint(sys.path)

Bei der Ausführung ist das Ergebnis wie folgt.

pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook

python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
#  '/Users/mbp/Documents/lib',
#  '/Users/mbp/Documents/my-project/python-snippets/notebook',
#  '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
#  '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
#  '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
#  '/usr/local/lib/python3.7/site-packages']

Das Ergebnis hängt von der Umgebung ab. In der Beispielumgebung (Mac mit von Homebrew installiertem Python3) werden die following Verzeichnisse in sys.path gespeichert.

  1. Das Verzeichnis, das sterben ausgeführte Skriptdatei (.py) enthält
  2. Das durch die Umgebungsvariable PYTHONPATH festgelegte Verzeichnis (siehe unten für Details)
  3. Das aktuelle Arbeitsverzeichnis
  4. Drei Verzeichnisse für die Standardbibliothek
  5. Das site-packages-Verzeichnis für Bibliotheken von Drittanbietern, die mit pip installiert werden

Wenn SIE das aktuelle Verzeichnis im Terminal verschieben und erneut ausführen, 3. ändert sich das aktuelle Verzeichnis in einen anderen Pfad.

cd ..

pwd
# /Users/mbp/Documents/my-project/python-snippets

python3 notebook/print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
#  '/Users/mbp/Documents/lib',
#  '/Users/mbp/Documents/my-project/python-snippets',
#  '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
#  '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
#  '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
#  '/usr/local/lib/python3.7/site-packages']

Da sich der Suchpfad des Moduls je nach aktuellem Verzeichnis ändert, funktioniert der Import möglicherweise nicht, je nachdem, wo die Skriptdatei ausgeführt wird.

Module werden in der Reihenfolge von sys.path gesucht. Daher Werden zuerst Module in dem Verzeichnis gesucht, das die ausgeführte Skriptdatei (.py) enthält. Sie, dass, wenn eine Datei mit demselben Namen wie sterben Standardbibliothek im selben Verzeichnis wie sterben ausgeführte Skriptdatei vorhanden ist, diese Datei importiert WIRD.

Neuen Modulsuchpfad mit sys.path.append() hinzufügen

Da sys.path nur eine Liste ist, können Sie neue Pfade hinzufügen. In diesem Beispiel WIRD die Methode append() verwendet, aber SIE können auch die Methode insert() usw. verwenden. verwenden.

Wenn Sie nach dem Hinzufügen eines Pfads zu sys.path importieren, können Sie die Module in den hinzugefügten Pfad importieren.

Wenn Sie beispielsweise ein Verzeichnis Eine Ebene über der Skriptdatei hinzufügen möchten, können Sie Folgendes schreiben.

import os
import sys

sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

Das Hinzufügen zu sys.path ist nur in diesem Code aktiv. Wenn Sie Pfade dauerhaft hinzufügen möchten, verwenden Sie sterben beschriebene PYTHONPATH- oder .pth-Dateien.

Fügen Sie einen neuen Modulsuchpfad mit PYTHONPATH hinzu

Verwenden Sie die Umgebungsvariable PYTHONPATH, um den Modulsuchpfad dauerhaft hinzuzufügen.

Fügen Sie für Unix-ähnliche Betriebssysteme einschließlich Mac beispielsweise Folgendes zu ~/.bashrc hinzu. Um mehrere Pfade hinzuzufügen, trennen Sie sie mit einem Doppelpunkt :.

export PYTHONPATH="/path/to/add:$PYTHONPATH"

Unter Windows können Sie PYTHONPATH sowie normale Umgebungsvariablen hinzufügen, indem Sie mit der rechten Maustaste auf Ihren PC (Arbeitsplatz) -> System -> Systemeigenschaften -> Umgebungsvariablen klicken. Trennen Sie unter Windows mehrere Pfade mit einem Semikolon ;.

Das Verzeichnis ‚/Users/mbp/Documents/lib‘ im Beispiel wird zu PYTHONPATH hinzugefügt.

Neuen Modulsuchpfad mit Pfadkonfigurationsdatei (.pth) hinzufügen

Wenn Sie eine Pfadkonfigurationsdatei (.pth) im Verzeichnis site-packages ablegen, können Sie Modulsuchpfade hinzufügen.

Die Pfadkonfigurationsdatei (.pth) sollte einen Pfad pro Zeile enthalten. Es kann ein relativer Pfad oder ein absoluter Pfad sein. Es ist möglich, einen Kommentar mit # zu schreiben. Der Dateiname kann beliebig sein, solange die Erweiterung pth ist.