假设我有一个具有以下结构的项目:
├── 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。
虽然以上两种方法都可以使用,但它们却令人感到困惑和难以理解,因为一种情况是假设导入将在更高一级进行,而另一种情况是在似乎不必要的情况下使用相对导入。
有没有办法更宽限地处理这个问题?
谢谢。
答案 0 :(得分:-1)
您可以通过在其中创建一个modules
文件来使__init__.py
成为python软件包。
├── modules
│ ├── __init__.py
| ├── modulea.py
│ └── moduleb.py
└── program.py
然后在from modules.moduleb import some_object
中使用modulea
。