Python中的嵌套模块和包导入

时间:2013-05-20 01:30:48

标签: python python-import

我们有一个非常大的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”

我该如何解决这个问题?

1 个答案:

答案 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)