Heim > Artikel > Backend-Entwicklung > Warum schlägt Python bei relativen Importen aus einem Paketverzeichnis fehl, wenn „python -m' verwendet wird?
Über den Paketfehler der obersten Ebene beim relativen Import hinaus
Beim Versuch, relative Importe aus den Untermodulen eines Pakets auszuführen, tritt ein verwirrender Fehler auf im Paketverzeichnis. Insbesondere ist der Fehler „ValueError: relativer Importversuch über Paket der obersten Ebene hinaus“ aufgetreten.
Dieser Fehler ist auf das eigenartige Verhalten von Python zurückzuführen, den Speicherort, von dem ein Paket geladen wurde, nicht aufzuzeichnen. Folglich wird beim Ausführen eines Moduls mit python -m Paketname.Modulname das aktuelle Arbeitsverzeichnis nicht als Paket betrachtet.
Daher ist ein relativer Importversuch wie from ..Ein Import foo, der auf ein Modul zugreifen soll in einem Geschwisterverzeichnis führt zur Fehlermeldung. Dies liegt daran, dass in Python der erforderliche Verweis auf das Geschwisterverzeichnis fehlt.
Im Gegensatz dazu ermöglicht die Ausführung des Moduls mit python -m package_name.package_submodule.module_name eine erfolgreiche Auflösung der from ..A import foo import-Anweisung. In diesem Fall behält Python das Wissen über das übergeordnete Verzeichnis, was den Zugriff auf Geschwisterverzeichnisse ermöglicht.
Es bleibt unklar, warum Python das aktuelle Arbeitsverzeichnis trotz seines praktischen Nutzens nicht als Paket betrachtet. Diese Einschränkung kann zu Verwirrung und unerwarteten Fehlern führen, wenn relative Importe aus dem Paketverzeichnis durchgeführt werden.
Das obige ist der detaillierte Inhalt vonWarum schlägt Python bei relativen Importen aus einem Paketverzeichnis fehl, wenn „python -m' verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!