470 Stimmen

Ein Verzeichnis dauerhaft zum PYTHONPATH hinzufügen?

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 ?

29voto

Blue Peppers Punkte 3532

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.

18voto

Pierz Punkte 5458

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.

16voto

testsingh Punkte 1299

Unter MacOS wird der Pfad zu einer bestimmten Bibliothek nicht angegeben. Geben Sie den vollständigen Pfad zum Root-Projektordner in

~/.bash_profile 

hat mir zum Beispiel den Tag versüßt:

export PYTHONPATH="${PYTHONPATH}:/Users/<myuser>/project_root_folder_path"

danach tun:

source ~/.bash_profile

11voto

Zah Punkte 5673

Unter Linux können Sie einen symbolischen Link von Ihrem Paket zu einem Verzeichnis im PYTHONPATH erstellen, ohne sich mit den Umgebungsvariablen auseinandersetzen zu müssen. Etwas wie:

ln -s /your/path /usr/lib/pymodules/python2.7/

11voto

Peter Piper Punkte 3495

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.

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