Python meldet ModuleNotFoundError, obwohl das Paket installiert ist? Meist stimmt die Umgebung, der Import-Name oder der Dateiname nicht. So löst du es.
Aufwand:
ca. 10 Min.
Das Symptom
Das Skript, das eben noch lief, bricht mit einer einzigen roten Zeile ab:
ModuleNotFoundError: No module named 'requests'. Du bist dir sicher, das
Paket installiert zu haben – pip install lief schließlich durch. Trotzdem
besteht Python darauf, das Modul nicht zu kennen.
Die „Layer 8“-Wahrheit
Python lügt hier nicht, es sucht nur an einer anderen Stelle, als du denkst. Auf
einem typischen System existieren mehrere Pythons nebeneinander – das
systemeigene, ein oder mehrere venvs, verschiedene Minor-Versionen. Jedes hat
seinen eigenen Paketordner. Wenn pip ins eine installiert und du das Skript
mit einem anderen startest, treffen sich beide nie. Der zweithäufigste Grund ist
ein Etikettenschwindel bei den Namen: Man installiert pillow, importiert aber
PIL. Und der stille Klassiker: eine eigene Datei namens random.py, die die
echte Bibliothek verdeckt. In allen drei Fällen ist nicht Python kaputt – nur
die Erwartung, dass „installiert“ automatisch „hier und jetzt auffindbar“ heißt.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.
Aktives Python identifizieren
Zuerst klären, welches Python und welches pip gerade aktiv sind. Zeigen beide auf dasselbe (idealerweise dein venv), passt die Umgebung:
which python
python -m pip --version
2.
Ins richtige venv wechseln oder eines anlegen
Läuft das Skript außerhalb der Umgebung, in der das Paket steckt, hilft das passende venv. Neu anlegen und aktivieren, falls noch keines existiert:
python3 -m venv .venv
source .venv/bin/activate
3.
Im aktiven Interpreter installieren
Der sicherste Weg gegen 'falsches pip': die Installation direkt an den laufenden Interpreter binden. So landet das Paket garantiert in genau der Umgebung, die auch das Skript nutzt:
python -m pip install <paket>
4.
Import-Name gegen Paketname prüfen
Wenn das Paket installiert ist und die Umgebung stimmt, ist oft nur der Import falsch. Nachsehen, unter welchem Namen das Modul wirklich importiert wird (Pillow als PIL, opencv-python als cv2).
5.
Namenskollision mit eigener Datei ausschließen
Heißt deine eigene Datei wie ein Modul (z. B. random.py, email.py, token.py), importiert Python deine Datei statt der Bibliothek – und findet die erwarteten Inhalte nicht. Datei umbenennen und die zugehörige .pyc entfernen.
Häufige Fragen (FAQ)
?Warum ModuleNotFoundError, obwohl ich das Paket installiert habe?
Fast immer, weil pip in eine andere Python-Umgebung installiert hat als die, mit der du das Skript startest. Systemweites Python, ein venv und mehrere Versionen (python3.11, python3.12) haben getrennte Paketordner. Installation und Ausführung müssen dieselbe Umgebung treffen.
?Warum heißt der Import anders als das Paket?
Weil Paketname und Modulname nicht identisch sein müssen. 'pip install pillow' liefert das Modul 'PIL', 'opencv-python' importiert man als 'cv2', 'beautifulsoup4' als 'bs4'. Der ModuleNotFoundError nennt den Import-Namen, nicht den Installationsnamen.
Belege
Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.