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:
1 |
|
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!