路径结构:
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命名空间,导入和包的文档,虽然我很放心地发现它似乎让每个人都感到沮丧,但我还没有找到解决方案。有什么建议吗?