如何从Python 3.9中导入其目录中模块的同级目录导入模块而不修改sys.path?

问题描述 投票:0回答:1

我的项目文件结构看起来像这样:

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 的大多数其他人有所帮助。)请告知。

我咨询过的类似问题:

我查阅过的其他资源:

python python-import importerror python-3.9 modulenotfounderror
1个回答
0
投票

我从未真正解决/理解这个问题,但通过小心使用此模板设置项目工作区,我成功地避免了再次与它搏斗。

© www.soinside.com 2019 - 2024. All rights reserved.