Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:circular_import

Dies ist eine alte Version des Dokuments!


  • Import-Error wegen eines circular Imports

Für gewöhnlich bekommt man diese Meldung:

ImportError: cannot import name 'xyz' from partially initialized module 'abc' (most likely due to a circular import) (module in which the issue happens)

  • der Parser lädt Modul A
  • in A verweist Objekt A.1 auf ein Objekt B.1
  • B.1 ist in Modul B definiert
  • B.1. verweist auf ein Objekt A.2
  • A.2 ist in Modul A definiert

Das Problem ist, das der Parser versucht ein Modul A zu laden und dabei alle Abhängigkeiten aufzulösen und dazu B lädt bevor A komplett geladen ist.
B wiederum muss A laden, was bereits halb geladen ist und das resultiert in einer Loop.

  • das Objekt was auf B verweist muss in ein eigenes Modul gepackt werden
    • das Objekt ist dann in Modul C
    • Modul C verweist dann auf Modul B, welches auf Modul A verweist
    • damit gibt es keinen Kreis mehr
python/circular_import.1649680526.txt.gz · Zuletzt geändert: 2022/04/11 14:35 von root