不明白这个 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
我的文件结构如下:
└── 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