假设我具有以下目录结构:
a\ __init__.py b\ __init__.py c\ __init__.py c_file.py d\ __init__.py d_file.py
在a软件包的中__init__.py,将c导入软件包。但是c_file.py进口a.b.d。
a
__init__.py
c
c_file.py
a.b.d
程序失败,表示尝试导入b时不存在。(它实际上不存在,因为我们正在导入它。)`c_file.pya.b.d
`如何解决这个问题?
如果a取决于c,而c取决于a,那么它们实际上不是同一单位吗?
您应该真正检查一下为什么将a和c拆分为两个包,因为您应该将一些代码拆分为另一个包(以使它们都依赖于该新包,而不是彼此依赖),或者应该合并它们一包
你可以推迟导入,例如a/__init__.py:
a/__init__.py
def my_function(): from a.b.c import Blah return Blah()
也就是说,将导入推迟到真正需要之前。但是,我还将仔细查看我的程序包定义/用法,因为像所指出的那样循环依赖可能表示设计问题。