Heim >Backend-Entwicklung >Python-Tutorial >Wie behebe ich den Fehler „Versuchter relativer Import in Nicht-Paket' in Python?

Wie behebe ich den Fehler „Versuchter relativer Import in Nicht-Paket' in Python?

Linda Hamilton
Linda HamiltonOriginal
2024-12-18 14:08:11805Durchsuche

How to Fix

Behebung des Fehlers „Versuchter relativer Import in Nicht-Paket“ mit __init__.py

Das Importieren von Modulen mit relativen Pfaden kann bei der Arbeit mit der Python-Paketstruktur zu Herausforderungen führen. Ein solches Problem ist der Fehler „Versuchter relativer Import in Nicht-Paket“, der auftritt, wenn versucht wird, Module über Paketverzeichnisse hinweg zu importieren, obwohl __init__.py-Dateien vorhanden sind.

Um die Grundursache zu verstehen, ist es wichtig, sie zu verstehen wie der Importmechanismus von Python funktioniert. Importe werden im Allgemeinen relativ zum Namen der aktuellen Datei ausgeführt. Wenn eine Datei jedoch direkt ausgeführt wird, nimmt sie den Namen „__main__“ anstelle ihres üblichen Namens an. Diese Besonderheit stört relative Importe, was zu dem oben genannten Fehler führt.

Anstatt den Code direkt auszuführen, sollten Sie die Verwendung der Option -m in Betracht ziehen, mit der Sie ein Modul als Skript behandeln und ihm den entsprechenden Namen zuweisen können. Um beispielsweise core_test.py mit dieser Methode auszuführen, geben Sie den folgenden Befehl ein:

python -m pkg.tests.core_test

Alternativ können Sie den Paketnamen im Modul selbst angeben, indem Sie das Attribut Paket verwenden. Diese Technik stellt sicher, dass relative Importe auch dann korrekt funktionieren, wenn die Datei direkt als Skript ausgeführt wird. Weitere Einzelheiten zu diesem Ansatz finden Sie im Python Enhancement Proposal 366 (PEP-366).

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Versuchter relativer Import in Nicht-Paket' in Python?. 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