„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum gibt Python den Fehler „ValueError: versuchter relativer Import über das Top-Level-Paket hinaus“ aus und wie kann er vermieden werden?

Warum gibt Python den Fehler „ValueError: versuchter relativer Import über das Top-Level-Paket hinaus“ aus und wie kann er vermieden werden?

Veröffentlicht am 17.11.2024
Durchsuche:650

Why Does Python Throw a \

Relativer Import über das Paket der obersten Ebene hinaus

Beim Versuch relativer Importe innerhalb eines mehrstufigen Python-Pakets das Modul aus dem Paketverzeichnis ausführen kann zum Fehler „ValueError: versuchter relativer Import über das Paket der obersten Ebene hinaus“ führen. Für eine effektive Paketverwaltung ist es von entscheidender Bedeutung, den Grund für diesen Fehler zu verstehen.

Der Fehler tritt auf, weil Python keine Aufzeichnungen darüber führt, woher Pakete geladen werden. Das Ausführen eines Moduls als „python -m test_A.test“ informiert Python im Wesentlichen darüber, dass sich test_A.test nicht in einem Paket befindet (obwohl es sich in Paket/test_A befindet). Folglich wird der Versuch „from ..A import foo“ ungültig, da Python nicht weiß, dass test_A Teil eines größeren Pakets ist.

Im Gegensatz dazu behält die Verwendung von „python -m package.test_A.test“ die hierarchische Struktur bei und ermöglicht die erfolgreiche Auflösung von „from ..A import foo“. Es spiegelt genau die Tatsache wider, dass test_A ein untergeordnetes Verzeichnis innerhalb des geladenen Pakets „Paket“ ist.

Der zugrunde liegende Grund, warum Python das aktuelle Arbeitsverzeichnis nicht als Paket betrachtet, ist unbekannt. Diese Einschränkung kann jedoch gemildert werden, indem Verzeichnisse mithilfe der Datei „__init__.py“ explizit als Pakete deklariert werden und beim Importieren von Modulen der Paketsuchmechanismus von Python eingehalten wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3