Heim >Backend-Entwicklung >Python-Tutorial >Warum erhalte ich „ModuleNotFoundError: Kein Modul mit dem Namen x', wenn ich relative Importe in Python 3 verwende?

Warum erhalte ich „ModuleNotFoundError: Kein Modul mit dem Namen x', wenn ich relative Importe in Python 3 verwende?

Linda Hamilton
Linda HamiltonOriginal
2024-10-28 02:53:02850Durchsuche

 Why am I getting

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn