既然关于相对进口的问题太多了,我会尽量简短和甜美的。是的,我已经阅读了“第 10 亿次相对进口”。
我有一个这样的项目结构:
.
├── Makefile
└── src
├── __init__.py
├── model
│ └── train_model.py
└── preprocessing
└── process.py
例如,我希望能够调用make preprocessing
or make train
which then run process.py
or or train_model.py
with
## Make train
train:
python3 src/model/train_model.py
例如,模块将始终来自 Makefile 所在的顶级项目文件夹。
现在,我的问题是我可能在不同的子模块之间存在依赖关系,例如train_model.py
and process.py
。具体来说,如果我尝试使用导入,则会收到process
错误消息。以类似的方式,我尝试过,这给了我另一个错误:.train_model
from src.preprocessing import process
ImportError: No module named 'src'
from ...preprocessing import process
SystemError: Parent module '' not loaded, cannot perform relative import
我if __name__ == '__main__':
在我的末尾使用train_model.py
,但我似乎无法弄清楚 python 如何使用__name__
来查找不同的模块,以及如果这个 f**** 在这个过程中发生了什么。