Wie finde ich heraus, welche Verzeichnisse in der PYTHONPATH
-Variable meines Systems aufgelistet sind, von innerhalb eines Python-Skripts (oder der interaktiven Shell)?
Antworten
Zu viele Anzeigen?Kann anscheinend die andere Antwort nicht bearbeiten. Hat einen kleinen Fehler darin, dass es nur für Windows gilt. Die allgemeinere Lösung besteht darin, os.pathsep wie unten angegeben zu verwenden:
sys.path könnte Elemente enthalten, die speziell in Ihrer PYTHONPATH-Umgebungsvariable nicht enthalten sind. Um die Variable direkt abzufragen, verwenden Sie:
import os
os.environ.get('PYTHONPATH', '').split(os.pathsep)
PYTHONPATH ist eine Umgebungsvariable, deren Wert eine Liste von Verzeichnissen ist. Einmal festgelegt, wird sie von Python verwendet, um nach importierten Modulen zu suchen, zusammen mit anderen Standard- und Drittanbieter-Bibliotheksverzeichnissen, die in den "sys.path" von Python aufgeführt sind.
Wie bei anderen Umgebungsvariablen können Sie diese entweder in der Shell exportieren oder in ~/.bashrc setzen, siehe hier. Sie können den Wert von os.environ['PYTHONPATH'] in Python abfragen, wie unten gezeigt:
$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"
WENN es in der Shell definiert ist
$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite
DANN Ergebnis =>
/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
SONST Ergebnis =>
PYTHONPATH is not defined
Um PYTHONPATH auf mehrere Pfade festzulegen, siehe hier.
Beachten Sie, dass man einen Suchpfad zur Laufzeit mit sys.path.insert(), del oder remove() hinzufügen oder löschen kann, aber NICHT über os.environ[]. Beispiel:
>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // aber nicht da
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // Es ist da
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>>
Zusammenfassend ist PYTHONPATH eine Möglichkeit, den Python-Suchpfad für importierte Module in sys.path anzugeben. Sie können auch Listenoperationen direkt auf sys.path anwenden, ohne die Hilfe von PYTHONPATH.
- See previous answers
- Weitere Antworten anzeigen