问题有了相对进口在Python(Issue With Relative Imports In Pyt

2019-10-22 09:57发布

我遇到的问题与如何正确申报进口,我已经写了一些模块。

假设如下目录结构:

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' ,因为乙出口C.

我假设我可以改变B到import sub_dir.module_C ,但我不想这样做,因为那会打破我的时候B中直接启动,而不是从A.进口乙

什么是正确的方式(S)来处理这类问题?

Answer 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_cmodule_cmodule_b导入module_b你将有一个循环的进口问题。 这是一个设计问题。 你需要检查你的代码,并重新思考如何链接模块。



文章来源: Issue With Relative Imports In Python