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

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

Susan Sarandon
Susan SarandonOriginal
2024-12-22 04:40:14631Durchsuche

How Can I Avoid the

Relative Importe in Python

Das Verständnis relativer Importe in Python ist entscheidend, um den Fehler „Versuchter relativer Import in Nicht-Paket“ zu vermeiden.

Skript vs. Modul

Ein wichtiger Unterschied ergibt sich aus der Lademethode einer Python-Datei. Bei direkter Ausführung als Skript wird sein Name auf __main__ gesetzt. Wenn es hingegen importiert wird, enthält sein Name Paketinformationen.

Namenskonventionen

Wenn beispielsweise moduleX in package/subpackage1/moduleX.py importiert wird, wird sein Name angezeigt wird zu package.subpackage1.moduleX. Bei direkter Ausführung lautet der Name jedoch __main__.

Relative Importe

Relative Importe basieren auf dem Namen eines Moduls, um seine Pakethierarchie zu bestimmen. Module, deren Namen keine Punkte enthalten, werden nicht als Teil eines Pakets angesehen.

Fehlerursache

Der Fehler tritt auf, wenn relative Importe in Modulen versucht werden, deren Namen darauf hinweisen, dass sie vorhanden sind. Sie befinden sich nicht in einem Paket (d. h. ihren Namen fehlen Punkte). Dazu gehören Skripte (da main keine Punkte hat) und Module, die direkt aus dem aktuellen Verzeichnis geladen werden (wobei Python das aktuelle Verzeichnis zu seinem Suchpfad hinzufügt).

Lösungen

  • Als Modul ausführen:Verwenden Sie python -m package.subpackage1.moduleX, um Modul Skripte.
  • Notizen

Das Paketverzeichnis muss im Python-Suchpfad zugänglich sein.

In Python 2.6 ist das Paket
    beeinflusst auch die Paketauflösung für Module.

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