Permanentes Ändern des Python-Pfads mit PYTHONPATH
Während das Ändern von sys.path innerhalb eines Skripts für temporäre Änderungen nützlich ist, möchten Sie möglicherweise ein Verzeichnis zum Python-Pfad für alle Ihre Python-Sitzungen oder für ein bestimmtes Projekt hinzufügen, ohne einzelne Skripte zu ändern. Dies kann durch Setzen der Umgebungsvariablen PYTHONPATH erreicht werden.
Die Umgebungsvariable PYTHONPATH ist eine Liste von Verzeichnissen, die Python beim Start zu sys.path hinzufügt.
Um die Umgebungsvariable PYTHONPATH für Ihre aktuelle Terminal-Sitzung zu setzen, können Sie den Befehl export verwenden.
Entfernen wir die Zeile sys.path.append() aus use_custom_module.py und verwenden stattdessen PYTHONPATH.
Öffnen Sie use_custom_module.py im WebIDE-Editor und entfernen Sie die folgenden Zeilen:
## Get the absolute path to the custom modules directory
custom_modules_path = os.path.join(os.path.dirname(__file__), 'my_custom_modules')
## Add the custom modules directory to sys.path
sys.path.append(custom_modules_path)
Die Datei use_custom_module.py sollte nun wie folgt aussehen:
import sys
import os
## Now you can import my_module
import my_module
message = my_module.greet("LabEx User")
print(message)
## Optional: Print sys.path again to see the added directory
print("\nUpdated sys.path:")
print(sys.path)
Speichern Sie die Datei.
Versuchen Sie nun, das Skript auszuführen, ohne PYTHONPATH zu setzen:
python use_custom_module.py
Sie erhalten wahrscheinlich einen ModuleNotFoundError, da Python my_module nicht finden kann.
Traceback (most recent call last):
File "/home/labex/project/use_custom_module.py", line 5, in <module>
import my_module
ModuleNotFoundError: No module named 'my_module'
Setzen wir nun die Umgebungsvariable PYTHONPATH im Terminal, um unser benutzerdefiniertes Modulverzeichnis einzuschließen. Stellen Sie sicher, dass Sie sich im Verzeichnis /home/labex/project befinden.
export PYTHONPATH="/home/labex/project/my_custom_modules:$PYTHONPATH"
Dieser Befehl fügt /home/labex/project/my_custom_modules am Anfang der Variablen PYTHONPATH hinzu. Das $PYTHONPATH am Ende stellt sicher, dass alle vorhandenen Verzeichnisse in PYTHONPATH erhalten bleiben.
Führen Sie das Skript use_custom_module.py nun erneut in derselben Terminal-Sitzung aus:
python use_custom_module.py
Sie sollten die Ausgabe sehen, die anzeigt, dass das Modul gefunden und ausgeführt wurde:
Hello, LabEx User from my_module!
Updated sys.path:
['/home/labex/project', '/home/labex/project/my_custom_modules', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/labex/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']
Beachten Sie, dass /home/labex/project/my_custom_modules jetzt in sys.path enthalten ist, da wir die Umgebungsvariable PYTHONPATH gesetzt haben.
Das Setzen von PYTHONPATH im Terminal mit export wirkt sich nur auf die aktuelle Terminal-Sitzung aus. Um die Änderung dauerhaft zu machen, würden Sie den Befehl export normalerweise zur Startdatei Ihrer Shell hinzufügen (z. B. ~/.bashrc, ~/.zshrc). Für dieses Lab ist es jedoch ausreichend, es in der aktuellen Sitzung zu setzen, um das Konzept zu demonstrieren.