Der Pythonpath

Damit Module in die Python-Session importiert werden können, müssen sie über den sog. Pythonpath auffindbar sein. Dieser lässt sich auch bezeichnen als Suchpfad für Module.

Python durchläuft bei der Suche nach einem Modul diese Verzeichnisse in gelisteter Reihenfolge:

  1. Aktuelles Arbeitsverzeichnis
  2. Pythonpath
  3. Default Installationsverzeichnis für Module

Wenn Sie mit mit dem pip-Paketmanager eine Bibliothek installieren, dann ist durch diesen Suchpfad sichergestellt, dass das installierte Modul anschließend importiert werden kann. Python kennt schließlich den Installationspfad von pip (dies ist das Default-Installationsverzeichnis) und durchläuft dieses bei der Suche nach dem Modul.

Wenn wir ein eigenes Modul entwickeln, dann können wir die Datei in dem Verzeichnis des Skripts zu halten, welches den Import triggert. Dies ist der wohl einfachste Weg, um ein Modul für einen Import auffindbar zu machen. In der Regel soll das Dateisystem jedoch anders aufgebaut sein und die Module einer ordnenden Logik folgend abgelegt sein. In dem Fall müssen diese Verzeichnisse in den Pythonpath eingetragen werden. Aus Python heraus lässt sich der Pythonpath mit diesem Kommando einsehen:

import sys
sys.path

Hier werden 3 Techniken beschrieben, wie der Pythonpath editiert werden kann.

Systemvariablen auf Betriebssystemebene editieren

Mit dem Anlegen einer weiteren Systemvariable werden die Module in dem entsprechenden Verzeichnis dauerhaft (also auch nach Neustart der Session oder des Computers) auffindbar.

In Windows geben wir dazu in der Suchleiste ‚Systemumgebungsvariablen‘ ein. Mit dem Button Umgebungsvariablen öffnet das Menü zum editieren der Variablen. Nun suchen wir im unteren Bereich des Fensters unter Systemvariablen nach dem Eintrag path. Abschließend ergänzen wir den Pfad um das Verzeichnis, in dem sich unsere zu importierenden Module befinden.

Fortgeschrittenen Windows-Users ist zu empfehlen einen Eintrag PYTHONPATH zu erstellen und diesen dann mit %PYTHONPATH% in die Umgebungsvariable Path aufzunehmen. Alle Modulverzeichnisse können dann in der Variable PYTHONPATH festgehalten werden und die Systemsteuerung bleibt übersichtlicher.

Häufig ist es nach dem Anlegen der Variable nötig, Windows neu zu starten.

In Linux können wir den Pythonpath mit dieser Anweisung editieren:

PATH="${PATH}:/pfad/zu/unserem/modul/"  
export PATH

Nach dem editieren der Systemvariable sollte unser Verzeichnis nun im Output der Anweisung sys.path auftauchen.

Systemvariablen aus Python heraus editieren

Mit dem Modul sys lässt sich der Pythonpath auch direkt aus der Session heraus editieren.

import sys
sys.path.insert(0,'C:/pfad/zu/unserem/modul/')

Insbesondere bei der Entwicklung von Modulen mit mehreren Entwicklern ist diese Variante empfehlenswert. Wird über ein gemeinsames Repository entwickelt, entfällt auf diesem Weg das editieren des Pythonpaths bei jedem einzelnen Entwickler auf Betriebssystemebene.

Anlegen einer pth-Datei

Eine weitere Möglichkeit den Pythonpath zu editieren, ist das Anlegen einer pth-Datei in einem Verzeichnis, welches sich bereits im Pythonpath befindet. Typischerweise wird das Verzeichnis /Lib/site-packages dafür gewählt. Eine pth-Datei funktioniert wie eine Systemverlinkung. In der Datei werden die Pfade zu den gewünschten Modulverzeichnissen eingetragen.

Bei den Einträgen ist zu beachten, dass auch unter Windows der Vorwärtsslash als Trennzeichen der Verzeichnisse verwendet wird. Wenn mehrere Pfade in eine Datei eingetragen werden, wird jeder Pfad in eine neue Zeile geschrieben.

Hier zwei Pfade als Beispieleintragung:

C:/Pfad/zu/Modul
C:/Anderer/Pfad/zu/Modul