链接导入子模块的正确方法是什么?

时间:2020-10-22 20:09:49

标签: python python-3.x

假设我有一个具有以下结构的项目:

├── modules
│   ├── modulea.py
│   └── moduleb.py
└── program.py

program.py是主要的可执行文件,它会像这样导入模块

from modules import modulea

在modulea中,我想从moduleb导入一些东西。现在,从逻辑上讲,我应该像在同一目录中一样执行import moduleb。但这会产生ModuleNotFoundError: No module named 'moduleb'

因此,为了使此链导入正常工作,我要么必须做from modules import moduleb。会激怒IDE,因为周围没有“ modules”目录,也没有from . import moduleb会激怒pylint。

虽然以上两种方法都可以使用,但它们却令人感到困惑和难以理解,因为一种情况是假设导入将在更高一级进行,而另一种情况是在似乎不必要的情况下使用相对导入。

有没有办法更宽限地处理这个问题?

谢谢。

1 个答案:

答案 0 :(得分:-1)

您可以通过在其中创建一个modules文件来使__init__.py成为python软件包。

├── modules
│   ├── __init__.py
|   ├── modulea.py
│   └── moduleb.py
└── program.py

然后在from modules.moduleb import some_object中使用modulea