Relativer Importfehler: Über Paket der obersten Ebene hinaus
In Python 3 bieten relative Importe eine bequeme Möglichkeit, auf Module innerhalb desselben zu verweisen Verzeichnis oder Paket. Es kann jedoch verwirrend sein, auf den Fehler „ValueError: versuchter relativer Import über das Paket der obersten Ebene hinaus“ zu stoßen.
Berücksichtigen Sie die folgende Paketstruktur:
package/ __init__.py A/ __init__.py foo.py test_A/ __init__.py test.py
Beim Versuch, ein Modul aus einem zu importieren Unterpaket (z. B. von ..A import foo in test.py) kann der oben genannte Fehler auftreten, wenn die folgenden Bedingungen zutreffen met:
Der Grund dafür Dieser Fehler ist auf einen grundlegenden Aspekt des Importmechanismus von Python zurückzuführen. Wenn ein Paket geladen wird, wird es als „Paket der obersten Ebene“ betrachtet und relative Importe können nur auf Module innerhalb dieses Pakets oder seiner Unterpakete verweisen. Allerdings erkennt Python das übergeordnete Verzeichnis des Pakets nicht automatisch als Paket, wenn ein Modul direkt ausgeführt wird.
Daher wird im obigen Szenario, wenn Sie python -m test_A.test aus dem Paketverzeichnis heraus ausführen, das übergeordnete Verzeichnis ('package/') wird nicht als Paket betrachtet und der relative Import von ..A import foo versucht effektiv, über das Paket der obersten Ebene hinauszugehen.
Um dieses Problem zu beheben Fehler, stellen Sie sicher, dass Sie beim Ausführen des Moduls den gesamten Paketpfad angeben:
python -m package.test_A.test
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Python den Fehler „ValueError: versuchter relativer Import über das Paket der obersten Ebene hinaus'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!