我遇到了如何正确声明我编写的某些模块的导入问题。
假设以下目录结构:
main_dir/
__init__.py
module_A
sub_dir/
__init__.py
module_B
module_C
因此,模块B和C都在相对于模块A的相同子目录中。
模块B导入C. 模块A有时会导入B。
因此,在模块B中,使用import module_C
可以处罚款。
在模块A中,使用import sub_dir.module_C
可以正常工作。
但是,在模块A中,使用import sub_dir.module_B
导致ImportError no module named 'module_C'
,因为B导入C。
我假设我可以将B更改为import sub_dir.module_C
,但我不想这样做,因为当我直接从B开始而不是从A导入B时它会中断。
处理此类问题的正确方法是什么?
答案 0 :(得分:1)
这应该是您的文件的应用程序结构。
app/
├── __init__.py
├── module_a.py
└── subdir
├── __init__.py
├── module_b.py
└── module_c.py
<强> module_a.py 强>
from subdir import module_b, module_c
然后,您将可以访问 module_a 中的所有模块。
如果您在 module_b 中导入 module_b 或在 module_b 中导入 module_c ,您将获得cyclic import问题。这是一个设计问题。您需要检查代码并重新思考如何链接模块。