Python 中的相对导入问题
Issue With Relative Imports In Python
我 运行 遇到了如何正确声明我编写的某些模块的导入的问题。
假设目录结构如下:
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 时它会中断。
处理此类问题的正确方法是什么?
这应该是您的应用文件结构。
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_c 或 module_c 中导入 module_b 在 module_b 中,您将遇到 cyclic import 问题。这是一个设计问题。您需要检查您的代码并重新考虑如何 link 模块。
我 运行 遇到了如何正确声明我编写的某些模块的导入的问题。
假设目录结构如下:
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 时它会中断。
处理此类问题的正确方法是什么?
这应该是您的应用文件结构。
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_c 或 module_c 中导入 module_b 在 module_b 中,您将遇到 cyclic import 问题。这是一个设计问题。您需要检查您的代码并重新考虑如何 link 模块。