Ich arbeite an einem bestehenden Projekt und um die Funktionalität der gesamten Anwendung nicht zu beeinträchtigen, ist eine Umstrukturierung der Anwendung nicht zulässig, was dazu führt, dass ich auf einige sehr lange zirkuläre Importprobleme stoße.
Ich wollte wissen, ob es eine Lösung wie für die Typprüfung gibt, mit der ich das Problem des zirkulären Imports für andere Dinge wie Callables oder Variablen umgehen kann.
Zum Beispiel:
from typing import TYPE_CHECKING
from somemodule import A # This is the line causing import issue.
if TYPE_CHECKING:
from somemodule import A # Solution for type checking.
def func() -> 'A': # This works
return 'A'(a=1, b=1) # But what can I do for this?
Jede Hilfe wäre sehr willkommen, vielen Dank im Voraus.
Der Fehler, den ich bekomme, ist entlang der Linien
File "SomePath", line 5, in <module>
from somemodule import A
File "SomeOtherPath", line 6, in <module>
from nrelatedmodule2 import get_something
File "SomePath", line 20, in <module>
from relatedmodule1 import get_another_thing
File "SomeOtherPath", line 3, in <module>
from somemodule import A
Lösung des Problems
Es ist möglich zu prüfen, ob ein Name (zB A
) definiert ist:
'A' in globals()
Wenn Sie dies verwenden, sollten Sie in der Lage sein, A zu importieren, wenn und nur wenn ein anderer Name nicht definiert ist:
if not module in globals():
import A
Oder importieren A
, es sei denn, es wurde bereits importiert:
if not A in globals():
import A
Keine Kommentare:
Kommentar veröffentlichen