Die Suche nach dem Modul (python -m)

Die Suche nach dem Modul bei Verwendung von python -m <modulname> folgt einem präzisen, schrittweisen Algorithmus, der garantiert, dass das aktuelle Arbeitsverzeichnis Vorrang hat.

Die Suche funktioniert in dieser exakten Reihenfolge:

1. Initialisierung von sys.path

Bevor die eigentliche Suche beginnt, erstellt der Python-Interpreter die Liste der zu durchsuchenden Pfade (sys.path).

  • Der erste Eintrag in dieser Liste (sys.path[0]) ist immer das aktuelle Arbeitsverzeichnis (Current Working Directory, CWD), also das Verzeichnis, von dem aus Sie den python-Befehl abgesetzt haben.

2. Iterative Suche in sys.path

Python durchläuft nun jeden einzelnen Eintrag in sys.path in der Reihenfolge, in der er in der Liste erscheint. Für jeden Eintrag (der typischerweise ein Ordnerpfad ist) versucht Python, den angeforderten Modulnamen (<modulname>) zu finden.

Der Interpreter sucht nach einer der folgenden Übereinstimmungen:

  • Für ein einzelnes Modul (z. B. python -m test): Es wird im aktuellen Pfad nach einer Datei namens test.py gesucht.
  • Für ein Paket (z. B. python -m mein_paket.untermodul): Es wird im aktuellen Pfad nach einem Unterverzeichnis namens mein_paket gesucht, das eine __init__.py-Datei enthält (oder ab Python 3.3+ als implizites Namespace-Paket erkannt wird).

3. Exakte Reihenfolge der durchsuchten Orte

Die Suche stoppt, sobald eine Übereinstimmung gefunden wird. Die Prioritätenliste ist wie folgt:

PrioritätOrtBeschreibung
1Aktuelles Arbeitsverzeichnis (Workspace)Das Verzeichnis, in dem Sie den Befehl python -m ... eingeben. Hat höchste Priorität.
2PYTHONPATH-VerzeichnisseAlle Ordner, die in Ihrer Umgebungsvariable PYTHONPATH definiert sind, in der Reihenfolge, in der sie dort gelistet sind.
3Standard-SystempfadeSystemweite Installationspfade, wie z.B. /usr/lib/pythonX.Y/ oder C:\PythonXY\Lib.
4site-packagesDer spezifische Ordner, in dem Ihre via pip installierten Pakete abgelegt sind.