假设我有一个具有以下结构的项目:
├── 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
。