不明白这个 ModuleNotFoundError 的原因

Don't understand cause of this ModuleNotFoundError

我的文件结构如下:

└── project    
    ├── __init__.py
    ├── main.py
    └── package1
        ├── __init__.py
        ├── module1 
        └── subpackage
            ├── __init__.py
            └── module2.py

模块 2 包含一个名为 A 的函数,模块 1 使用代码导入模块 2:

from subpackage import module2

这在直接 运行 module1 时工作正常,但是当我尝试从 main.py 导入 module1 时,出现错误。 main.py中导入语句的代码是

from package1 import module1

这给出了错误

  Traceback (most recent call last):
  File "C:\...\project\main.py", line 1, in <module>
    from package1 import module1
  File "C:\...\project\package1\module1.py", line 1, in <module>
    from subpackage import module2
ModuleNotFoundError: No module named 'subpackage'

我真的不明白这里发生了什么,我尝试用 os.chdir() 将当前工作目录更改为 module1 中的 package2,但这没有效果。在研究问题后,我发现唯一可能与我的问题相关的是绝对导入与相对导入,但更改导入语句不会影响错误。

在您的 module1.py 文件中,您需要为导入的文件提供完整路径(绝对路径)。因此,如果您想 运行 来自 main.py 文件的代码,您需要将 module1.py 中的导入更改为:

from package2.subpackage import module2

import package2.subpackage.module2