Heim >Backend-Entwicklung >Python-Tutorial >Wie kann der Python-Fehler „Versuchter relativer Import über das Top-Level-Paket hinaus' behoben werden?

Wie kann der Python-Fehler „Versuchter relativer Import über das Top-Level-Paket hinaus' behoben werden?

Barbara Streisand
Barbara StreisandOriginal
2024-11-18 07:35:02658Durchsuche

How to Resolve Python's

Fehler beim relativen Python-Import: Fehlerbehebung bei „versuchtem relativen Import über das Paket der obersten Ebene hinaus“

In Python können Sie mit relativen Importen auf Module verweisen innerhalb eines Pakets relativ zum aktuellen Verzeichnis. Der Versuch eines relativen Imports über das Paket der obersten Ebene hinaus kann jedoch zu dem Fehler „ValueError: Versuch eines relativen Imports über das Paket der obersten Ebene hinaus“ führen.

Beachten Sie die folgende Paketstruktur:

package/
   __init__.py
   A/
      __init__.py
      foo.py
   test_A/
      __init__.py
      test.py

Beim Ausführen von test.py im Paketverzeichnis mit python -m test_A.test tritt der obige Fehler auf. Der Grund dafür ist, dass Python keine Informationen über das Paket der obersten Ebene speichert, in dem sich test_A.test befindet.

Bei Verwendung von from ..A import foo versucht Python, auf gleichgeordnete Verzeichnisse des geladenen Speicherorts zuzugreifen. In diesem Fall gibt es jedoch kein Konzept für Geschwisterverzeichnisse, da das Paket nicht als Paket erkannt wird.

Im Gegensatz dazu löst die Ausführung von python -m package.test_A.test den relativen Import korrekt auf, da Python das Paket identifizieren kann als Paket der obersten Ebene und navigieren Sie zu seinem untergeordneten Verzeichnis test_A.

Dass Python das aktuelle Arbeitsverzeichnis nicht als Paket erkennt, bleibt jedoch ein Rätsel. Trotz seines Nutzens kann dieses Versehen zu Fehlern führen, wenn relative Importe aus dem Verzeichnis der obersten Ebene versucht werden.

Das obige ist der detaillierte Inhalt vonWie kann der Python-Fehler „Versuchter relativer Import über das Top-Level-Paket hinaus' behoben werden?. 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