Frage

Wie finde ich heraus, welche Verzeichnisse mein System ist in PYTHONPATH Variable aufgeführt sind, aus einem Python-Skript (oder der interaktiven Shell)?

War es hilfreich?

Lösung

sys.path könnten Elemente enthalten, die nicht speziell in Ihrem PYTHONPATH Umgebungsvariable sind. Um die Variable Abfrage direkt verwenden:

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

Andere Tipps

Sie würden wahrscheinlich auch diese wollen:

import sys
print(sys.path)

oder als eine Auskleidung aus der Klemme:

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

Kann nicht scheinen, die andere Antwort zu bearbeiten. Hat einen kleinen Fehler, dass es nur für Windows ist. Je mehr generische Lösung zu verwenden ist os.sep wie folgt:

sys.path könnten Elemente enthalten, die nicht speziell in Ihrem PYTHONPATH Umgebungsvariable sind. Um die Variable Abfrage direkt verwenden:

import os
os.environ['PYTHONPATH'].split(os.pathsep)

PYTHONPATH ist eine Umgebungsvariable, deren Wert eine Liste von Verzeichnissen. Einmal eingestellt, wird sie von Python verwendet für importierte Module zu suchen, zusammen mit anderen std. und 3rd-Party-Bibliothek Verzeichnisse aufgelistet in Python "sys.path".

Wie alle anderen Umgebungsvariablen, können Sie entweder exportieren es in der Schale oder in ~ / .bashrc finden Sie unter hier . Sie können os.environ [ 'PYTHONPATH'] für ihren Wert in Python Abfrage wie folgt:

$ 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 in der Schale definiert als

$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite

THEN 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']

ELSE Ergebnis =>

PYTHONPATH is not defined

PYTHONPATH auf mehrere Pfade zu setzen, finden Sie unter hier .

Beachten Sie, dass man einen Suchpfad über sys.path.insert hinzufügen oder löschen kann (), del oder () zur Laufzeit entfernen, aber nicht durch os.environ []. Beispiel:

>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/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 // It's there
['$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']
>>> 

Insgesamt PYTHONPATH ist ein Weg, um den Python-Suchpfad zu definieren (e) für importierte Module in sys.path. Sie können auch Listenoperationen direkt an sys.path ohne die Hilfe von PYTHONPATH gelten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top