Anaconda Python dazu bringen, Ihre Python-Skripte zu finden – Den PYTHONPATH modifizieren

(Die folgenden Informationen gelten nur für Anaconda-Installationen. Die Grundidee gilt für jede Python-Installation, aber die genauen Wege, das Problem anzugehen, sind unterschiedlich.)

Angenommen, Sie schreiben ein Python-Modul mit dem Namen, sagen wir, coolscript, das alle möglichen coolen Funktionen enthält, die Sie geschrieben haben. Vielleicht hast du es auf dem Desktop deines Computers gespeichert. Vielleicht gehen Sie dann zu Anaconda Navigator, starten Spyder oder ein anderes Programm innerhalb von Anaconda und versuchen, diese Funktionen mit einer Codezeile wie

from coolscript import *

zu importieren, aber leider erhalten Sie einen Fehler:

ModuleNotFoundError: No module named 'coolscript'

Viele Dinge könnten dies verursachen, aber vielleicht liegt es daran, dass das Verzeichnis, in dem sich coolscipt.py befindet, nicht Teil des PYTHONPATH ist, d. h.e., der Menge der Dateiverzeichnisse, in denen Python nach benötigten Dateien sucht. Lassen Sie uns herausfinden, was unser PYTHONPATH ist und ob es unser Skript enthält. Starten Sie eine Anaconda-Eingabeaufforderung. Sie können dies direkt über das Startmenü in Windows oder die Launcher-App in MacOS tun, aber eine andere Möglichkeit ist, den Anaconda Navigator zu starten und ein Terminal zu öffnen, wie im folgenden Screenshot zu sehen:

Nun führen Sie diesen Befehl aus, um Ihre PYTHONPATH zu sehen:

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

In meinem Fall erhalte ich das folgende Ergebnis auf einem persönlichen Windows-basierten Rechner mit einer frischen Anaconda3-Installation:

Ungeachtet dessen, dass sich mein Skript in einem dieser Ordner (oder deren Unterordnern) befindet, wird es von Python nicht gefunden, es sei denn, Sie geben explizit den vollständigen Pfad an, wenn Sie es von Python aus aufrufen (oder wenn Sie Python in dem Verzeichnis starten, in dem sich die Datei befindet). Im Idealfall wollen wir dieses Problem vermeiden, indem wir die Module richtig installieren. Wenn das Modul von jemand anderem geschrieben wurde, ist es am besten, es mit conda zu installieren oder, falls das nicht möglich ist, mit pip oder einer setup.py-Datei. Dies sind auch die besten Vorgehensweisen für den eigenen Code.

Manchmal ist es jedoch hilfreich, ein bequemes „Arbeitsverzeichnis“ für temporären oder unfertigen Code zu haben, und man möchte vielleicht nicht jedes Mal, wenn man den Code aufruft, mit Python zu diesem Verzeichnis navigieren. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, Ihr bevorzugtes Verzeichnis zu Ihrem PYTHONPATH hinzuzufügen.

Wenn wir vorübergehend ein Verzeichnis zu unserem Python hinzufügen wollen, könnten wir einfach die folgenden Befehle in dem Python-Terminal ausführen, das wir zur Ausführung des Skripts verwenden:

import syssys.path.append(r'/path/to/my/package')

wobei „/path/to/my/package“ in den Dateipfad zu dem Ordner geändert werden sollte, der Ihre Python-Skriptdatei enthält. Dieser Ansatz würde nur so lange funktionieren, bis wir diese Instanz des Python-Compilers schließen; wir müssten ihn jedes Mal neu ausführen, wenn wir eine Python-Befehlszeile starten.

Wenn wir einen Ordner dauerhaft zu unserem PYTHONPATH hinzufügen wollen, können wir dies tun, indem wir eine .pth-Datei im site-packages-Verzeichnis erstellen. Im Screenshot oben sehen Sie den Ordner site-packages. Jede Anaconda-Installation sollte einen Ordner mit diesem Namen haben. Erstellen Sie eine neue Textdatei in diesem Verzeichnis und benennen Sie sie so, dass sie die Dateierweiterung .pth hat (eine Datei mit dem Namen extrapythonfolders.pth wäre z. B. gut geeignet). In dieser Textdatei können Sie die Verzeichnisse auflisten, die Sie in Ihr PYTHONPATH aufnehmen wollen, und zwar eines pro Zeile. Auf einem Windows-Rechner könnte ich zum Beispiel eine Zeile mit dem Namen C:\myscripts hinzufügen. Speichern Sie die Datei mit diesen neuen Verzeichnissen und versuchen Sie dann erneut, den folgenden Befehl in der Anaconda-Eingabeaufforderung auszuführen:

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

Sie sollten sehen, dass Ihre neuen Verzeichnisse jetzt enthalten sind (Sie müssen Anaconda möglicherweise neu starten, damit es in allen Programmen funktioniert). Sie sollten nun in der Lage sein, Module zu importieren oder Code aus diesem Verzeichnis auszuführen, unabhängig davon, wo Sie python in Ihrer Dateistruktur starten.

Schreibe einen Kommentar