我的文件结构如下:
└── project
├── __init__.py
├── main.py
└── package1
├── __init__.py
├── module1
└── subpackage
├── __init__.py
└── module2.py
module2包含一个名为A的函数,而模块1则使用以下代码导入module2:
from subpackage import module2
这在直接运行module1时可以正常工作,但是当我尝试从main.py导入module1时,出现错误。 main.py中import语句的代码为
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,但这没有任何效果。研究问题后,我唯一发现的可能与问题有关的是绝对导入与相对导入,但是更改导入语句并不会影响该错误。
答案 0 :(得分:1)
在您的module1.py
文件中,您需要提供导入文件的完整路径(绝对路径)。因此,如果要从main.py
文件运行代码,则需要将module1.py
中的导入更改为:
from package2.subpackage import module2
或
import package2.subpackage.module2