Heim > Backend-Entwicklung > Python-Tutorial > Warum schlagen meine relativen Python 3-Importe fehl und wie kann ich sie beheben?

Warum schlagen meine relativen Python 3-Importe fehl und wie kann ich sie beheben?

Linda Hamilton
Freigeben: 2024-12-25 05:21:18
Original
319 Leute haben es durchsucht

Why Are My Python 3 Relative Imports Failing, and How Can I Fix Them?

Relative Importe in Python 3: Verständnis und Problemumgehungen

Relative Importe, die üblicherweise zum Importieren von Modulen innerhalb desselben Verzeichnisses verwendet werden, können manchmal zu Problemen führen Fehler wie ImportError oder ModuleNotFoundError. Das Verständnis der zugrunde liegenden Gründe ist entscheidend für die Lösung dieser Probleme.

Relatives Importverhalten in Python 3

In Python 3 funktionieren relative Importe nur, wenn das Modul das andere Modul importiert liegt im selben Paket. Ein Paket ist ein Verzeichnis, das eine Datei __init__.py enthält, die den Paketstatus angibt. Wenn das Paket Unterverzeichnisse mit zusätzlichen Modulen enthält, schlagen relative Importe aus diesen Unterverzeichnissen in Module in anderen Unterverzeichnissen fehl.

Einbeziehung von Root-Paketen

Um dieses Problem zu beheben, stellen Sie sicher, dass Das übergeordnete Verzeichnis der beteiligten Module ist ein Paket, was durch das Vorhandensein einer Datei __init__.py angezeigt wird. Wenn das übergeordnete Verzeichnis kein Paket ist, schlägt der relative Import mit der Fehlermeldung „versuchter relativer Import ohne bekanntes übergeordnetes Paket“ fehl.

Fehler: „ModuleNotFoundError: Kein Modul namens ‚mymodule‘“

Dieser Fehler tritt auf, wenn das zu importierende Modul (in diesem Fall mymodule) im angegebenen Pfad nicht vorhanden ist. Stellen Sie sicher, dass das Modul vorhanden ist und den korrekten Namen hat.

Fehler: „SystemError: Parent module '' nicht geladen, relativer Import kann nicht durchgeführt werden“

Dieser Fehler weist darauf hin, dass das Das übergeordnete Modul (das den relativen Import enthält) wurde nicht geladen. Stellen Sie sicher, dass das übergeordnete Modul ausgeführt oder importiert wird, bevor Sie den relativen Import versuchen.

Problemumgehungen für relative Importe

Wenn das Vermeiden relativer Importe nicht möglich ist, gibt es Problemumgehungen:

  • Absolute Importe verwenden: Aus .mymodule-Import ersetzen myfunction mit from mypackage.mymodule import myfunction unter Verwendung des absoluten Pfads aus dem Root-Paket.
  • PYTHONPATH ändern: Fügen Sie das übergeordnete Verzeichnis des Pakets zur Umgebungsvariablen PYTHONPATH hinzu, um es verfügbar zu machen der Modulsuchpfad.
  • Frob PYTHONPATH im Code: Hängen Sie an übergeordnetes Verzeichnis zu sys.path mithilfe von Codefragmenten wie dem in der angegebenen Antwort.

Vorsicht beim Ausführen von Skripten innerhalb eines Pakets

Guido van Rossum, Der Erfinder von Python betrachtet das Ausführen von Skripten innerhalb eines Pakets als Antimuster und hält es für unnötig. Für Szenarien, in denen dies jedoch erforderlich ist, können die oben genannten Problemumgehungen angewendet werden.

Das obige ist der detaillierte Inhalt vonWarum schlagen meine relativen Python 3-Importe fehl und wie kann ich sie beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage