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