我们有一个非常大的python项目(200多个文件)
到目前为止,我一直在处理它的依赖关系很好,有一些地方,项目的一些新部分使用,现有部分来自另一个模块,并且它很简单,以确保一切按正确的顺序导入。但现在我遇到麻烦,当子包中的模块需要一个模块形成另一个子包时
来说明采用这个简化版本
文件系统
Core
|__init__.py
|Database
-|__init__.py
-|Dialogs
--|__init__.py
--|SomeDialog.py
-|Controls
--|__init__.py
--|SomeControl.py
|Frame.py
现在如果在SomeControl.py
我通过此声明导入SomeDialog.py
from Core.Dialogs.SomeDialog import SomeDialog
其中SomeDialog
是文件Somedialog
当我在主应用程序中转到import Core
时,我收到错误,“Core”没有模块“Database”
我该如何解决这个问题?
答案 0 :(得分:0)
此案例命名为“循环进口”。您可以根据需要使用函数和方法导入模块。
# SomeDialog.py
class Dialog(object):
def draw(self):
from ..Controls.SomeControl import control
control()
# SomeControl.py
def control():
from ..Dialogs.SomeDialog import all_dialogs
do_something(all_dialogs)