Heim >Backend-Entwicklung >Python-Tutorial >Warum erhalte ich „ModuleNotFoundError: Kein Modul mit dem Namen x', wenn ich relative Importe in Python 3 verwende?
Relative Importe und ModuleNotFoundError: Kein Modul namens x
Beim Versuch, relative Importe in Python 3 zu nutzen, stoßen Programmierer gelegentlich auf den „ModuleNotFoundError: Fehler „Kein Modul mit dem Namen x“. Dieser Fehler bedeutet, dass der Interpreter zur Laufzeit kein Modul mit diesem spezifischen Namen finden kann.
Um dieses Problem zu verstehen, ist es wichtig, zwischen absoluten und relativen Importen zu unterscheiden. Absolute Importe werden verwendet, um im sys.path verfügbare Module zu importieren, während relative Importe verwendet werden, um Module relativ zum aktuellen Modul zu importieren. Relative Importe erfordern jedoch, dass das aktuelle Modul zu einem Paket gehört.
Das bereitgestellte Code-Snippet besteht aus zwei Dateien: test.py und config.py. config.py enthält Funktionen und Variablen, während test.py die Konfiguration importiert und auf den Parameter „debug“ zugreift. Trotz des Vorhandenseins einer __init__.py-Datei tritt der Fehler „ModuleNotFoundError: Kein Modul namens ‚config‘“ auf.
Dieser Fehler ist auf die Tatsache zurückzuführen, dass die ausgeführte Datei (test.py) nicht darin enthalten ist eine Paketstruktur. Folglich ist es nicht in der Lage, relative Importe durchzuführen. Die Verwendung absoluter Importe würde dieses Problem lösen, wie im geänderten Codeausschnitt unten zu sehen ist:
<code class="python"># test.py import ryan.config # Replace config with ryan.config for absolute import print(ryan.config.debug)</code>
Alternativ würde das Erstellen einer Paketstruktur und das Platzieren von test.py darin relative Importe ermöglichen. Die Verzeichnisstruktur könnte wie folgt aussehen:
. ├── __init__.py └── ryan ├── __init__.py ├── config.py └── test.py
Zusammenfassend lässt sich sagen, dass relative Importe nur dann zulässig sind, wenn das aktuelle Modul zu einem Paket gehört. Wenn der ausgeführten Datei eine Paketstruktur fehlt, sollten absolute Importe verwendet werden, um „ModuleNotFoundError“-Ausnahmen zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich „ModuleNotFoundError: Kein Modul mit dem Namen x', wenn ich relative Importe in Python 3 verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!