Python:包中的模块相互导入的问题

时间:2017-02-08 04:23:24

标签: python packages python-import

路径结构:

base.py
my_module/
    __init__.py
    mod1.py
    mod2.py

base.py:

from my_module.mod2 import *
mod2_func2() # This call will work

my_module / mod1.py:

from mod2 import *

def mod1_func():
    mod2_func1("Hello World") # This call will not work.

my_module / mod2.py:

from mod1 import *

def mod2_func1(input_text):
    print(input_text)

def mod2_func2():
    mod1_func() # This call will work

此代码将出错,因为未定义mod2_func1。如果我直接运行mod1.py(即将代码添加到__name__=="__main__"块,它将正常工作。

这是我真实问题的一个简化示例,它涉及一个包内的所有模块都需要像这样相互交谈。主要的是确保mod1和mod2可以访问本地命名空间中的每个其他内容,而不管从base调用哪个内容。我已经看了很多关于python命名空间,导入和包的文档,虽然我很放心地发现它似乎让每个人都感到沮丧,但我还没有找到解决方案。有什么建议吗?

0 个答案:

没有答案