Relative Importe: Ein tieferer Einblick
In der Welt der Python-Programmierung sorgen relative Importe häufig für Verwirrung. Dieser Artikel befasst sich mit den Feinheiten relativer Importe und geht auf die allgegenwärtige Fehlermeldung „Versuchter relativer Import in Nicht-Paket“ ein.
Die Unterscheidung zwischen Skript und Modul
Verstehen Der grundlegende Unterschied zwischen einem Skript und einem Modul ist entscheidend. Wenn Sie eine Python-Datei direkt ausführen, wird sie zu einem Skript und erhält den Namen __main__. Wenn eine Datei hingegen importiert wird, wird sie zu einem Modul mit einem Namen, der ihre Position in der Pakethierarchie enthält.
Modulbenennung
Der zugewiesene Name zu einem Modul hängt davon ab, ob es aus einem Paket oder direkt aus seinem Verzeichnis importiert wurde. Wenn ein Modul aus einem Paket importiert wird, folgt sein Name dem durch Punkte getrennten Pfad des Pakets und seines enthaltenden Unterpakets (z. B. package.subpackage1.moduleA). Wenn ein Modul jedoch direkt aus seinem Verzeichnis importiert wird, ist sein Name nur der Modulname (z. B. ModulA).
Relative Importe und Pakete
Relative Importe Verlassen Sie sich auf den Namen eines Moduls, um seine Position in der Pakethierarchie zu bestimmen. Wenn der Name eines Moduls keine Punkte enthält, gilt es nicht als Teil eines Pakets. Dies bedeutet, dass relative Importe, die versuchen, außerhalb des aktuellen Verzeichnisses des Moduls zu durchlaufen, mit dem Fehler „relativer Import in Nicht-Paket“ fehlschlagen.
Beheben des Fehlers
An Um diesen Fehler zu beheben, ziehen Sie die folgenden Lösungen in Betracht:
Beachten Sie, dass das Paketverzeichnis in Python enthalten sein muss Modulsuchpfad (sys.path), damit diese Lösungen funktionieren. Darüber hinaus verfügen Module ab Python 2.6 über die Attribute Name und Paket, die ihren effektiven Namen beeinflussen.
Das obige ist der detaillierte Inhalt vonWarum gibt Python den Fehler „Relativer Import in Nicht-Paket' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!