我的项目文件结构看起来像这样:
hyphenated-project-root/
__init__.py
src/
__init__.py
module0.py
> from module1 import MyClass
> import module2
module1.py
> class MyClass: ...
module2.py
> from module1 import MyClass
scripts/
__init__.py
script1.py
> import module2
__init__.py
文件为空,module0.py
和 script1.py
都有 __name__ == "__main__":
块。我在 Mac M1 上使用 Python 3.9。
我希望能够从项目根目录中的终端运行
python src/module0.py arg1 arg2
以及 python scripts/script1.py
(或 python -m scripts.script1
)。
我尝试了
import module2
的几种变体,修改__init__.py
文件,将scripts/
嵌套在src/
下,并从import_module
中搞乱
importlib
,但我不断得到ImportError
或ModuleNotFoundError
.
如果可能的话,我想避免修改
sys.path
。在较小程度上,我也想避免使用setuptools
。
我知道关于这个主题有几个问题/答案,但我不知道我做错了什么。 (我的预感是,十亿次相对导入将对来自 Google 的大多数其他人有所帮助。)请告知。
我咨询过的类似问题:
我查阅过的其他资源:
我从未真正解决/理解这个问题,但通过小心使用此模板设置项目工作区,我成功地避免了再次与它搏斗。