我希望我的项目有这个结构:
requirements.txt README.md .gitignore project/ __init__.py project.py core/ __init__.py base.py engines/ __init__.py engine1.py engine2.py utils/ __init__.py refine_data.py whatever.py
该应用程序是从project/project.py
.但是,在使用相对或绝对导入时,我经常会遇到导入错误.
两个引擎都需要从中导入project.core.base
,utils也需要从中导入project.core.base
,并且project.py
(运行的主文件)需要能够从中导入engines
.
绝对导入不起作用:
# engines/engine1.py from project.core.base import MyBaseClass
这给出了错误:
ImportError: No module named project.core.base
但是,如果我尝试相对导入而不是
# engines/engine1.py from ..core.base import MyBaseClass
我明白了:
ValueError: Attempted relative import beyond toplevel package
我已经看到Github上的其他项目结构相似,但这似乎会引起各种各样的问题.我如何让它工作?