You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python嵌套导入报错:ModuleNotFoundError问题求助

Python模块导入问题解决

问题原因

你运行gui/gui.py时,Python的当前工作目录是项目根目录。scripts/script1/main.py里的from file1 import...属于顶级导入——Python会直接在sys.path列出的目录(也就是项目根目录)里找file1模块,但file1.py实际在scripts/script1/子目录下,自然找不到,所以报ModuleNotFoundError。

哪怕sys.path包含项目根目录,Python也不会自动递归搜索所有子目录的模块,只会查顶级目录。

解决方案

1. 使用相对导入(推荐规范做法)

在main.py里改成同级模块的相对导入,同时给scripts/script1目录添加一个空的__init__.py文件(让Python把这个目录识别为包):

# main.py 里的导入代码改成:
from .file1 import function1
from .file2 import function2

2. 使用绝对导入(无需改目录结构)

直接基于项目根目录写完整的模块路径,利用sys.path包含项目根目录的特性:

# main.py 里的导入代码改成:
from scripts.script1.file1 import function1
from scripts.script1.file2 import function2

3. 临时添加子目录到sys.path(适合快速调试)

在main.py的最开头加入代码,把自身所在的scripts/script1目录加入sys.path:

# main.py 开头添加:
import sys
from pathlib import Path

script1_dir = Path(__file__).resolve().parent
sys.path.append(str(script1_dir))

# 原导入代码保留不变
from file1 import function1
from file2 import function2

内容的提问来源于stack exchange,提问作者Ohad Lichtenstein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:33:18