Zirkuläre Importabhängigkeiten: Eine häufige Python-Falle
Zirkuläre Importabhängigkeiten können frustrierend sein, insbesondere in Python, wo Module häufig miteinander verbunden sind. Ein solches Beispiel tritt auf, wenn __init__.py eines Pakets ein anderes Paket importiert, während eine Datei in diesem zweiten Paket versucht, das erste zu importieren.
Bedenken Sie die bereitgestellte Verzeichnisstruktur:
a/ __init__.py b/ __init__.py c/ __init__.py c_file.py d/ __init__.py d_file.py
In a's __init__.py, das C-Paket wird importiert. Allerdings versucht c_file.py, das sich im C-Paket befindet, a.b.d. zu importieren. Diese zirkuläre Abhängigkeit führt zur Laufzeit zu einem Fehler, der besagt, dass b nicht existiert.
Beheben des Problems
Eine Lösung besteht darin, den Import zu verschieben. Beispielsweise könnten Sie in a/__init__.py eine Funktion definieren:
<code class="python">def my_function(): from a.b.c import Blah return Blah()</code>
Indem Sie den Import verzögern, bis er unbedingt erforderlich ist, vermeiden Sie die zirkuläre Abhängigkeit. Dennoch ist es auch ratsam, das Verpackungsdesign zu überdenken. Solche Abhängigkeiten können manchmal auf Designfehler oder die Notwendigkeit einer Umgestaltung hinweisen.
Das obige ist der detaillierte Inhalt vonSo lösen Sie die zirkuläre Importabhängigkeit in Python: Eine häufige Gefahr. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!