it-swarm.com.de

Wie finde ich meinen Python-Pfad mit Python heraus?

Wie finde ich heraus, welche Verzeichnisse in der Variablen PYTHONPATH meines Systems in einem Python-Skript (oder der interaktiven Shell) aufgeführt sind?

285
Paul D. Waite

sys.path kann Elemente enthalten, die nicht spezifisch 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 = []
189
Mark Ransom

Sie würden wahrscheinlich auch das wollen:

import sys
print(sys.path)

Oder als One-Liner vom Terminal:

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

Die andere Antwort kann nicht bearbeitet werden. Hat einen kleinen Fehler darin, dass es nur Windows ist. Die allgemeinere Lösung ist, os.sep wie folgt zu verwenden:

sys.path kann Elemente enthalten, die nicht ausdrücklich in Ihrer PYTHONPATH-Umgebungsvariablen enthalten sind. Um die Variable direkt abzufragen, verwenden Sie:

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

PYTHONPATH ist eine Umgebungsvariable, deren Wert eine Liste von Verzeichnissen ist. Einmal festgelegt, wird es von Python verwendet, um nach importierten Modulen und anderen Standarddateien zu suchen. und Bibliotheksverzeichnisse von Drittanbietern, die in Pythons "sys.path" aufgelistet sind. 

Wie alle anderen Umgebungsvariablen können Sie sie entweder in Shell oder in ~/.bashrc exportieren, siehe hier . Sie können os.environ ['PYTHONPATH'] nach seinem Wert 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 in Shell definiert als 

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

ELSE Ergebnis =>

PYTHONPATH is not defined

Um PYTHONPATH auf mehrere Pfade einzustellen, siehe hier .

Beachten Sie, dass Sie einen Suchpfad über sys.path.insert (), del oder remove () zur Laufzeit hinzufügen oder löschen können, NICHT aber über os.environ [] .

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

Zusammenfassend ist PYTHONPATH eine Möglichkeit, den Python-Suchpfad bzw. die Python-Suchpfade für importierte Module in sys.path anzugeben. Sie können Listenoperationen auch ohne Hilfe von PYTHONPATH direkt auf sys.path anwenden. 

1
Leon Chang