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



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

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

program.py是主要的可执行文件,它导入类似的模块

from modules import modulea

在模块a中,我想从模块b中导入一些内容。现在,从逻辑上讲,我应该执行import moduleb,因为它在同一个目录中。但这将产生ModuleNotFoundError: No module named 'moduleb'

因此,为了使这个链导入工作,我要么必须执行from modules import moduleb。这激怒了IDE,因为没有";模块";目录或from . import moduleb,这会激怒pylint。

虽然上面的两种方法都有效,但它们让人感到困惑和不和谐,因为人们假设导入将从一个以上级别进行,而在似乎没有必要的地方使用相对导入。

有没有办法更优雅地处理这件事?

谢谢。

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

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

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

相关内容

最新更新