Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich den Fehler „Versuchter relativer Import in Nicht-Paket' in Python beheben?
Stellen Sie sich die folgende Verzeichnisstruktur vor:
app/ __init__.py sub1/ __init__.py mod1.py sub2/ __init__.py mod2.py
Um etwas aus Mod2 innerhalb des Moduls Mod1 zu importieren, wurde der folgende Code verwendet versucht:
from ..sub2 import mod2
Dies führt jedoch zu dem Fehler: „Versuchter relativer Import in Nicht-Paket.“
Der Fehler tritt auf, weil Indem Python das Modul als __main__ ausführt und das Argument mod1.py an den Interpreter übergibt, behandelt es es als Modul der obersten Ebene und ignoriert das Paket Informationen.
Um dieses Problem zu beheben, müssen die Dateien __init__.py sowohl im sub1- als auch im sub2-Verzeichnis ordnungsgemäß initialisiert werden. Dies bedeutet, dass es sich bei diesen Verzeichnissen tatsächlich um Pakete handelt und wir mithilfe relativer Importe über sie hinweg importieren können.
Wenn die Dateien __init__.py vorhanden sind, importiert der folgende Code erfolgreich Mod2 in Mod1:
from ..sub2 import mod2
PEP 366 schlägt einen Mechanismus zum Referenzieren von Modulen relativ zu vor Hauptmodul. In Python 2.6 und späteren Versionen können Sie Module relativ zum Hauptmodul mithilfe der folgenden Syntax importieren:
from . import mod2 from .. import sub2
Dieses Verhalten stimmt mit der erwarteten Funktionalität für Unterpaketimporte überein und gewährleistet einen konsistenten und intuitiven Importmechanismus.
Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „Versuchter relativer Import in Nicht-Paket' in Python beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!