526 Stimmen

Wie finde ich meinen PYTHONPATH mit Python heraus?

Wie finde ich heraus, welche Verzeichnisse in der PYTHONPATH-Variable meines Systems aufgelistet sind, von innerhalb eines Python-Skripts (oder der interaktiven Shell)?

832voto

Vanuan Punkte 28822

Sie würden wahrscheinlich auch dies wollen:

import sys
print(sys.path)

Oder als Einzeiler von der Konsole aus:

python -c "import sys; print('\n'.join(sys.path))"

Vorsicht: Wenn Sie mehrere Versionen von Python installiert haben, sollten Sie den entsprechenden Befehl python2 oder python3 verwenden.

294voto

Mark Ransom Punkte 283960

sys.path könnte Elemente enthalten, die nicht speziell in Ihrer Umgebungsvariablen PYTHONPATH enthalten sind. Um die Variable direkt abzufragen, verwenden Sie:

import os
try:
    user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
    user_paths = []

20voto

Vitali Punkte 3128

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)

10voto

Leon Chang Punkte 487

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.

8voto

juggler Punkte 277

Funktioniert in Windows 10, im Wesentlichen identisch mit der Antwort von vanuan, aber sauberer (übernommen von irgendwo, kann mich nicht erinnern, wo..):

import sys
for p in sys.path:
    print(p)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X