我正在处理一个现有的项目,为了不破坏整个应用程序的功能,不允许重组应用程序,这导致我遇到了一些非常长的循环导入问题。
我想知道是否有一个类似于类型检查的解决方案,它允许我绕过可调用或变量等其他事物的循环导入问题。
例如:
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 ?
任何帮助都将不胜感激,提前表示感谢。
我得到的错误是
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
可以检查是否定义了名称(如A
(:
'A' in globals()
使用此选项,您应该能够导入A,当且仅当其他名称未定义时:
if not module in globals():
import A
或者导入A
,除非它已经导入:
if not A in globals():
import A