Bei jeder Verwendung sys.path.append
wird das neue Verzeichnis hinzugefügt. Sobald ich Python schließe, wird die Liste jedoch auf die vorherigen (Standard?) Werte zurückgesetzt. Wie füge ich ein Verzeichnis dauerhaft hinzu PYTHONPATH
?
quelle
Bei jeder Verwendung sys.path.append
wird das neue Verzeichnis hinzugefügt. Sobald ich Python schließe, wird die Liste jedoch auf die vorherigen (Standard?) Werte zurückgesetzt. Wie füge ich ein Verzeichnis dauerhaft hinzu PYTHONPATH
?
Sie müssen Ihr neues Verzeichnis zur Umgebungsvariablen hinzufügen PYTHONPATH
, die durch einen Doppelpunkt vom vorherigen Inhalt getrennt ist. In jeder Form von Unix können Sie dies in einem Startskript tun, das für die von Ihnen verwendete Shell ( .profile
oder was auch immer, abhängig von Ihrer bevorzugten Shell) geeignet ist, mit einem Befehl, der wiederum von der betreffenden Shell abhängt. Unter Windows können Sie dies zu diesem Zweck über die System-GUI tun.
superuser.com
Möglicherweise ist dies ein besserer Ort, um weitere Fragen zu stellen, dh um weitere Einzelheiten zu erfahren, wenn Sie Einzelheiten zur Anreicherung einer Umgebungsvariablen in der von Ihnen ausgewählten Plattform und Shell benötigen, da dies an sich keine eigentliche Programmierfrage ist.
Wenn Sie bash verwenden (auf einem Mac oder einer GNU / Linux-Distribution), fügen Sie dies Ihrem hinzu
~/.bashrc
quelle
~/.bashrc
dann ausgeführt haben,source ~/.bashrc
siehe stackoverflow.com/questions/2518127/…sudo su
am Anfang Ihrer .bashrc-Datei zu setzen. Dieser Beitrag stimmt mit mir überein. Zumindest auf meinem System ist es nicht einmal notwendig.Anstatt zu manipulieren
PYTHONPATH
, können Sie auch eine Pfadkonfigurationsdatei erstellen . Finden Sie zuerst heraus, in welchem Verzeichnis Python nach diesen Informationen sucht:Aus irgendeinem Grund scheint dies in Python 2.7 nicht zu funktionieren. Dort können Sie verwenden:
Erstellen Sie dann
.pth
in diesem Verzeichnis eine Datei mit dem Pfad, den Sie hinzufügen möchten (erstellen Sie das Verzeichnis, falls es nicht vorhanden ist).Zum Beispiel:
quelle
python -m site --user-site
und(create the directory if it doesn't exist)
Teile waren das, was mir fehlte, um es zum Laufen zu bringen.somelib.pth
? Wenn nicht, raten Sie mal, warum dies möglicherweise nicht funktioniert?Dies funktioniert unter Windows
Dann können Sie alle Module in diesen Pfaden aus Ihren Skripten sehen.
quelle
Falls noch jemand verwirrt ist - wenn Sie einen Mac verwenden, gehen Sie wie folgt vor:
open .bash_profile
export PYTHONPATH=$PYTHONPATH:foo/bar
quelle
export
Schlüssel das, was mir gefehlt hat !!!!, positiv bewertet, vielen Dank!Sie können den Pfad über Ihre pythonrc-Datei hinzufügen, die unter Linux standardmäßig ~ / .pythonrc ist. dh.
Sie können die
PYTHONPATH
Umgebungsvariable auch in einer globalen RC-Datei festlegen , z. B.~/.profile
unter Mac oder Linux, oder über Systemsteuerung -> System -> Registerkarte Erweitert -> Umgebungsvariablen unter Windows.quelle
Um ein bisschen mehr Erklärung zu geben, Python automatisch seine Suchpfade konstruieren (wie erwähnt oben und hier ) mit dem
site.py
Skript ( in der Regel in sys.prefix gelegen +lib/python<version>/site-packages
sowielib/site-python
). Man kann den Wert von sys.prefix erhalten:Das site.py Skript fügt dann eine Reihe von Verzeichnissen, abhängig von der Plattform, wie zum Beispiel
/usr/{lib,share}/python<version>/dist-packages
,/usr/local/lib/python<version>/dist-packages
um den Suchpfad und auch sucht diese Pfade für<package>.pth
Dateien Config , die bestimmte zusätzliche Suchpfade enthalten. Zum Beispiel verwaltet easy-install seine Sammlung installierter Pakete, die einer systemspezifischen Datei hinzugefügt werden, z. B. unter Ubuntu/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Auf einem typischen System gibt es eine Reihe dieser .pth-Dateien, um die herum einige unerwartete Pfade in sys.path erklärt werden können:So kann man eine .pth - Datei erstellen und in jedem dieser Verzeichnisse (einschließlich der sitedir wie erwähnt setzen oben ). Dies scheint die Art und Weise zu sein, wie die meisten Pakete zum sys.path hinzugefügt werden, anstatt PYTHONPATH zu verwenden.
Hinweis: Unter OSX wurde von site.py ein spezieller zusätzlicher Suchpfad für 'Framework-Builds' hinzugefügt (scheint jedoch für die normale Verwendung von Python in der Befehlszeile zu funktionieren):
/Library/Python/<version>/site-packages
(z. B. für Python2.7 :)/Library/Python/2.7/site-packages/
, in dem Pakete von Drittanbietern verwendet werden sollen installiert werden (siehe README in diesem Verzeichnis). So kann man dort eine Pfadkonfigurationsdatei hinzufügen, die zusätzliche Suchpfade/Library/Python/2.7/site-packages/pip-usr-local.pth
enthält, z. B. eine Datei mit dem Namen, die enthält,/usr/local/lib/python2.7/site-packages/
und dann fügt die Systempython diesen Suchpfad hinzu.quelle
Bei mir hat es funktioniert, als ich die
.bash_profile
Datei geändert habe . Das Ändern der.bashrc
Datei funktionierte nur, bis ich die Shell neu startete.Für Python 2.7 sollte es so aussehen:
am Ende der
.bash_profile
Datei.quelle
Unter Linux können Sie einen symbolischen Link von Ihrem Paket zu einem Verzeichnis des PYTHONPATH erstellen, ohne sich mit den Umgebungsvariablen befassen zu müssen. Etwas wie:
quelle
Das Hinzufügen
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
zu ~ / .bashrc funktioniert möglicherweise nicht, wennPYTHONPATH
es derzeit nicht vorhanden ist (aufgrund von:
).Das Hinzufügen des oben genannten zu meinem ~ / .bashrc hat mir unter Ubuntu 16.04 geholfen
quelle
echo PYTHONPATH
und nichts ist aufgetaucht! Das bedeutet, dass dieser PYTHONPATH nicht initiiert wurde. Ich füge diese Zeile einfachexport PYTHONPATH=$PYTHONPATH:<PATH_TO_TF>/TensorFlow/models/research/object_detection
in meine~/.bashrc
Datei ein undsource ~/.bashrc
sie. Später, als ich "$ PYTHONPATH" wiederholte, gab es mir einen:<PATH_TO_TF>/TensorFlow/models/research/object_detection
Vorschlag, ob ich etwas falsch gemacht habe?export PYTHONPATH=<PATH_TO_TF>/TensorFlow/models/research/object_detection
, wenn Sie PYTHONPATH zum ersten Mal exportieren, müssen Sie es ohne den${PYTHONPATH}:
Teil tun:<PATH_TO_TF>/TensorFlow/models/research/object_detection
den zweiten entferntexport PYTHONPATH=$PYTHONPATH:/TensorFlow/models/research/slim
. Irgendwelche Vorschläge dazu, wie man das behebt?Unter MacOS, anstatt den Pfad zu einer bestimmten Bibliothek anzugeben. Geben Sie den vollständigen Pfad zum Stammprojektordner in an
machte meinen Tag zum Beispiel:
danach tun:
quelle
Um die Antwort von awesomo zu ergänzen, können Sie diese Zeile auch in Ihr
~/.bash_profile
oder einfügen~/.profile
quelle
.bash_profile
wenn Sie Login-Shell verwenden, andernfalls verwenden Sie.profile
Das Hinzufügen eines neuen Pfads zu PYTHONPATH erfolgt manuell durch:
Hinzufügen des Pfads zu Ihrem ~ / .bashrc-Profil im Terminal durch:
Fügen Sie Folgendes in Ihr Profil ein
Stellen Sie dann sicher, dass Sie Ihr bashrc-Profil als Quelle verwenden, wenn Sie Ihren Code im Terminal ausführen:
Hoffe das hilft.
quelle
Ich habe permanent in Windows Vista Python 3.5 hinzugefügt
System> Systemsteuerung> Erweiterte Systemeinstellungen> Erweitert (tippen Sie auf) Umgebungsvariablen> Systemvariablen> (wenn PYTHONPATH in der Spalte Variable nicht angezeigt wird) (klicken Sie auf) Neu> Variablenname: PYTHONPATH> Variablenwert:
Bitte schreiben Sie das Verzeichnis in den Variablenwert. Es sind Details der Antwort von Blue Peppers.
quelle
Das folgende Skript funktioniert auf allen Plattformen, da es sich um reines Python handelt. Es verwendet den Pathlib-Pfad, der hier unter https://docs.python.org/3/library/pathlib.html dokumentiert ist , damit er plattformübergreifend funktioniert. Sie führen es einmal aus, starten den Kernel neu und fertig. Inspiriert von https://medium.com/@arnaud.bertrand/modifying-python-s-search-path-with-pth-files-2a41a4143574 .
quelle
Dies ist ein Update für diesen Thread, der einige alte Antworten enthält.
Für diejenigen, die MAC-OS Catalina oder ein neueres (> = 10.15) verwenden, wurde ein neues Terminal mit dem Namen
zsh
(ein Ersatz für das altebash
) eingeführt.Ich hatte aufgrund dieser Änderung einige Probleme mit den obigen Antworten und habe eine Problemumgehung durchgeführt, indem ich die Datei erstellt
~/.zshrc
und das Dateiverzeichnis in das$PATH
und eingefügt habe$PYTHONPATH
Also habe ich zuerst getan:
Beim Öffnen des Editors habe ich folgenden Inhalt eingefügt:
speicherte es und startete das Terminal neu.
WICHTIG: Der obige Pfad ist auf den Pfad meines Computers eingestellt. Sie müssten ihn an Ihre Python anpassen.
quelle
In Python 3.6.4 können Sie sys.path über Python-Sitzungen hinweg wie folgt beibehalten:
Ich empfehle dringend, dass Sie virtualenv und virtualenvwrapper verwenden, da Sie sonst Ihren Pfad überladen
quelle
Der kürzeste Weg zwischen A B ist eine gerade Linie;
quelle