Wann immer ich benutze 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 hinzu PYTHONPATH
?
Ein Verzeichnis dauerhaft zu PYTHONPATH hinzufügen?
John Howard
ehrfürchtig
Wenn Sie bash verwenden (auf einem Mac oder einer GNU/Linux-Distribution), fügen Sie dies zu Ihrer hinzu ~/.bashrc
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
-
Das hat bei mir perfekt funktioniert, aber stellen Sie sicher, dass das Verzeichnis, auf das Sie zeigen, ganz oben steht drin.py-Datei in Ihrer Verzeichnisstruktur. Das war mir zunächst nicht ganz klar. Ich habe es zum Beispiel versucht export PYTHONPATH=$PYTHONPATH:/Users/joey/repos aber es hat nicht funktioniert, weil mein Repos-Verzeichnis kein _ hattedrin_.py. Ein Verzeichnis weiter nach unten: /Users/joey/repos/specificRepo hat es geschafft. Jetzt kann Python jedes nach unten gerichtete Verzeichnis durchlaufen, das mit dem spezifischen Repo-Verzeichnis verbunden ist, das a enthält drin.py !
– Joey
14. März 2013 um 14:29 Uhr
-
das hat bei mir funktioniert, aber könnten Sie erklären, wo sich diese PYTHONPATH-Variable befindet? und woher weiß “export PYTHONPATH”, dass es genau diese Datei findet?
– Apfelliebhaber
7. Juni 2013 um 17:23 Uhr
-
Denken Sie nach dem Bearbeiten daran
~/.bashrc
dann rennesource ~/.bashrc
siehe stackoverflow.com/questions/2518127/…– b_dev
13. August 2013 um 16:02 Uhr
-
Ich denke, es ist eine schlechte Idee zu setzen
sudo su
am Anfang Ihrer .bashrc-Datei. Dieser Beitrag stimmt mir zu. Zumindest auf meinem System ist es nicht einmal notwendig.– LondonRob
14. April 2014 um 10:00 Uhr
-
Warum denke ich, dass die Python-Bereitstellung in der Produktion ein Schmerz im Hintern sein könnte?
– Paul Carlton
10. März 2019 um 20:57 Uhr
Sie müssen Ihr neues Verzeichnis zur Umgebungsvariable hinzufügen PYTHONPATH
, durch einen Doppelpunkt vom vorherigen Inhalt getrennt. In jeder Form von Unix können Sie dies in einem Startskript tun, das für die von Ihnen verwendete Shell geeignet ist (.profile
oder was auch immer, abhängig von Ihrer bevorzugten Shell) mit einem Befehl, der wiederum von der betreffenden Shell abhängt; In Windows können Sie dies zu diesem Zweck über die System-GUI tun.
superuser.com
Vielleicht ist es ein besserer Ort, um weiter zu fragen, dh nach weiteren Details, wenn Sie Einzelheiten darüber benötigen, wie Sie eine Umgebungsvariable in Ihrer gewählten Plattform und Shell anreichern können, da es sich nicht wirklich um eine Programmierfrage an sich handelt.
-
Errata: Trennzeichen bei Windows wäre ein Semikolon. Wenn Sie Systempfade unter Windows überschreiben müssen, reicht die Einstellung über die GUI als Benutzerumgebungsvariable möglicherweise nicht aus, da Benutzervariablen an Systemvariablen angehängt werden. In diesen Fällen müssen Sie auf ein Startskript zurückgreifen, das die erforderlichen Anpassungen vornimmt.
– Nathan Ernst
4. August 2010 um 3:18 Uhr
-
@Nathan, tx für die Erinnerung am Semikolon, aber (wenn Sie natürlich ein Administrator sind) Sie kann einstellen System env.vars unter Windows (außerdem fragt das OP nicht, wie es geht überschreiben der Weg, nur wie anhängen dazu, also ist eine Benutzer-env.var auch dafür geeignet!-).
– Alex Martelli
4. August 2010 um 4:16 Uhr
-
auf meinem Arbeits-PC bin ich leider kein Admin, also muss ich zu solchen Maßnahmen greifen. 🙁
– Nathan Ernst
4. August 2010 um 22:13 Uhr
-
“In Windows können Sie dies zu diesem Zweck über die System-GUI tun.” -das hat bei mir nicht funktioniert. Ich musste die Lösung von Andrei Deusteanu unten implementieren.
– Jongleur
16. August 2020 um 4:05 Uhr
etw
Anstatt zu manipulieren PYTHONPATH
Sie können auch eine erstellen Pfad Konfigurationsdatei. Finden Sie zunächst heraus, in welchem Verzeichnis Python nach diesen Informationen sucht:
python -m site --user-site
Aus irgendeinem Grund scheint dies in Python 2.7 nicht zu funktionieren. Dort können Sie verwenden:
python -c 'import site; site._script()' --user-site
Erstellen Sie dann eine .pth
Datei in diesem Verzeichnis, die den Pfad enthält, den Sie hinzufügen möchten (erstellen Sie das Verzeichnis, falls es nicht existiert).
Zum Beispiel:
# find directory
SITEDIR=$(python -m site --user-site)
# create if it doesn't exist
mkdir -p "$SITEDIR"
# create new .pth file with our path
echo "$HOME/foo/bar" > "$SITEDIR/somelib.pth"
-
Ich habe dies mit Python 2.6 versucht und es scheint bei mir nicht zu funktionieren
– Lorcan O’Neill
26. Februar 2013 um 18:02 Uhr
-
Ich habe dieses Verzeichnis einfach mit meinem eigenen Bibliotheksverzeichnis verknüpft und alle meine Skripte dort gespeichert. Hat gut funktioniert.
– Maifeuer
5. März 2013 um 6:08 Uhr
-
Entschlossen, es erneut zu versuchen, nachdem ich dieses Thema wieder gefunden hatte, und es geschafft, es diesmal wie oben beschrieben zum Laufen zu bringen! Hochgestimmte und zerknirschte Entschuldigung 🙂
– Lorcan O’Neill
7. März 2013 um 11:20 Uhr
-
Das funktioniert einfach perfekt, ich war aber auf dem richtigen Weg
python -m site --user-site
und(create the directory if it doesn't exist)
Teile waren, was mir fehlte, um es zum Laufen zu bringen.– Mmmh mmh
9. März 2013 um 21:33 Uhr
-
Muss ich einen zusätzlichen Schritt machen, damit Python den hinzugefügten Pfad zu erkennt
somelib.pth
? Wenn nicht, irgendwelche Vermutungen, warum dies möglicherweise nicht funktioniert?– Miladious
4. April 2018 um 7:13 Uhr
Dies funktioniert unter Windows
- Wechseln Sie unter Windows mit Python 2.7 zum Python-Setup-Ordner.
- Öffnen Sie Lib/site-packages.
- Fügen Sie diesem Ordner eine leere Datei example.pth hinzu.
- Fügen Sie der Datei den erforderlichen Pfad hinzu, einen pro Zeile.
Dann können Sie alle Module innerhalb dieser Pfade aus Ihren Skripts sehen.
Falls jemand immer noch verwirrt ist – wenn Sie einen Mac verwenden, gehen Sie wie folgt vor:
- Terminal öffnen
- Typ
open .bash_profile
- Fügen Sie in der angezeigten Textdatei am Ende diese Zeile hinzu:
export PYTHONPATH=$PYTHONPATH:foo/bar
- Speichern Sie die Datei, starten Sie das Terminal neu und Sie sind fertig
-
Jeder, der sich fragt, wie man den Pfad von Python sieht, verwendet: welche Python
– Arindam Roychowdhury
31. Mai 2018 um 16:24 Uhr
-
ziemlich sicher, dass Sie das Terminal auch neu laden müssen
– Benutzer
29. September 2018 um 4:04 Uhr
-
eigentlich die
export
Schlüssel war das, was mir gefehlt hat !!!!, positiv bewertet, vielen Dank!– amdev
27. März 2020 um 20:22 Uhr
Blaue Paprika
Sie könnten den Pfad über Ihre pythonrc-Datei hinzufügen, die unter Linux standardmäßig ~/.pythonrc ist. dh.
import sys
sys.path.append('/path/to/dir')
Du könntest auch die einstellen PYTHONPATH
Umgebungsvariable, in einer globalen rc-Datei, wie z ~/.profile
unter Mac oder Linux oder über Systemsteuerung -> System -> Registerkarte Erweitert -> Umgebungsvariablen unter Windows.
-
Jeder, der sich fragt, wie man den Pfad von Python sieht, verwendet: welche Python
– Arindam Roychowdhury
31. Mai 2018 um 16:24 Uhr
-
ziemlich sicher, dass Sie das Terminal auch neu laden müssen
– Benutzer
29. September 2018 um 4:04 Uhr
-
eigentlich die
export
Schlüssel war das, was mir gefehlt hat !!!!, positiv bewertet, vielen Dank!– amdev
27. März 2020 um 20:22 Uhr
Um etwas mehr Erklärung zu geben, erstellt Python automatisch seine Suchpfade (wie oben erwähnt und hier) Verwendung der site.py
Skript (normalerweise in sys.prefix + lib/python<version>/site-packages
ebenso gut wie lib/site-python
). Man kann den Wert von sys.prefix erhalten:
python -c 'import sys; print(sys.prefix)'
Das site.py-Skript fügt dann eine Reihe von Verzeichnissen hinzu, abhängig von der Plattform, wie z /usr/{lib,share}/python<version>/dist-packages
, /usr/local/lib/python<version>/dist-packages
zum Suchpfad und auch sucht diese Pfade nach <package>.pth
config-Dateien, die bestimmte zusätzliche Suchpfade enthalten. Zum Beispiel Einfach zu installieren verwaltet seine Sammlung von installierten Paketen, die zu einer systemspezifischen Datei hinzugefügt werden, z. B. auf Ubuntu /usr/local/lib/python2.7/dist-packages/easy-install.pth
. Auf einem typischen System gibt es eine Reihe dieser .pth-Dateien, die einige unerwartete Pfade in sys.path erklären können:
python -c 'import sys; print(sys.path)'
Man kann also eine .pth-Datei erstellen und in einem dieser Verzeichnisse ablegen (einschließlich des oben erwähnten Sitedir). Dies scheint die Art und Weise zu sein, wie die meisten Pakete zum sys.path hinzugefügt werden, im Gegensatz zur Verwendung von PYTHONPATH.
Hinweis: Unter OSX gibt es einen speziellen zusätzlichen Suchpfad, der von site.py für „Framework-Builds“ hinzugefügt wurde (scheint aber für die normale Verwendung von Python über die Befehlszeile zu funktionieren): /Library/Python/<version>/site-packages
(zB für Python2.7: /Library/Python/2.7/site-packages/
), wo Pakete von Drittanbietern installiert werden sollen (siehe README in diesem Verzeichnis). So kann man dort eine Pfadkonfigurationsdatei hinzufügen, die zusätzliche Suchpfade enthält, zB eine Datei namens erstellen /Library/Python/2.7/site-packages/pip-usr-local.pth
was beinhaltet /usr/local/lib/python2.7/site-packages/
und dann fügt das System Python diesen Suchpfad hinzu.