Wann immer ich die sys.path.append
wird das neue Verzeichnis hinzugefügt. Sobald ich jedoch Python schließe, wird die Liste auf die vorherigen (Standard-?) Werte zurückgesetzt. Wie füge ich ein Verzeichnis dauerhaft zu PYTHONPATH
?
Antworten
Zu viele Anzeigen?Sie können den Pfad über Ihre pythonrc-Datei hinzufügen, die unter Linux standardmäßig in ~/.pythonrc steht.
import sys
sys.path.append('/path/to/dir')
Sie können auch die Option PYTHONPATH
Umgebungsvariable, in einer globalen rc-Datei, wie ~/.profile
auf Mac oder Linux, oder über Systemsteuerung -> System -> Registerkarte Erweitert -> Umgebungsvariablen unter Windows.
Zur weiteren Erläuterung: Python konstruiert seine Suchpfade automatisch (wie erwähnt über y aquí ) unter Verwendung der site.py
Skript (normalerweise in sys.prefix + lib/python<version>/site-packages
wie auch lib/site-python
). Man kann den Wert von sys.prefix erhalten:
python -c 'import sys; print(sys.prefix)'
Das Skript site.py fügt dann eine Reihe von Verzeichnissen hinzu, die von der jeweiligen Plattform abhängen, z. B. /usr/{lib,share}/python<version>/dist-packages
, /usr/local/lib/python<version>/dist-packages
zum Suchpfad und auch sucht in diesen Pfaden nach <package>.pth
Konfigurationsdateien, die bestimmte zusätzliche Suchpfade enthalten. Zum Beispiel leicht zu installieren verwaltet seine Sammlung installierter Pakete, die in einer systemspezifischen Datei abgelegt werden, z.B. unter Ubuntu in der Datei /usr/local/lib/python2.7/dist-packages/easy-install.pth
. Auf einem typischen System gibt es einen Haufen dieser .pth-Dateien, was einige unerwartete Pfade in sys.path erklären kann:
python -c 'import sys; print(sys.path)'
Man kann also eine .pth-Datei erstellen und in eines der folgenden Verzeichnisse (einschließlich des erwähnten sitedir) legen über ). Dies scheint der Weg zu sein, auf dem die meisten Pakete dem sys.path hinzugefügt werden, im Gegensatz zur Verwendung des PYTHONPATH.
Hinweis: Unter OSX gibt es einen speziellen zusätzlichen Suchpfad, der von site.py für "Framework-Builds" hinzugefügt wird (scheint aber für die normale Kommandozeilenverwendung von Python zu funktionieren): /Library/Python/<version>/site-packages
(z.B. für Python2.7: /Library/Python/2.7/site-packages/
), wo die Pakete von Drittanbietern installiert werden sollen (siehe die README in diesem Verzeichnis). Also kann man dort eine Pfadkonfigurationsdatei mit zusätzlichen Suchpfaden hinzufügen, z.B. eine Datei namens /Library/Python/2.7/site-packages/pip-usr-local.pth
die Folgendes enthält /usr/local/lib/python2.7/site-packages/
und dann wird das System Python diesen Suchpfad hinzufügen.
Bei mir hat es funktioniert, als ich die .bash_profile
Datei. Einfach ändern .bashrc
Datei funktionierte nur, bis ich die Shell neu gestartet habe.
Für Python 2.7 sollte es wie folgt aussehen:
export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"
am Ende der .bash_profile
Datei.