VSCode运行Python跨文件夹导入模块报ModuleNotFoundError错误求助
问题原因
你直接运行b.py时,Python会自动将b.py所在的目录Project/src/a/加入模块搜索路径sys.path,而你要导入的C模块存放在Project/src/目录下,该目录不在默认搜索路径中,因此触发ModuleNotFoundError。
解决方案
你可以根据自己的使用场景选择以下任意一种方案解决:
- 方案1:临时修改模块搜索路径(代码侵入最小,适合单文件快速测试)
在b.py的导入语句之前加入以下代码,把src目录加到搜索路径中即可:
import sys from pathlib import Path # 层级对应:当前文件b.py → 父目录a → 父目录src sys.path.append(str(Path(__file__).parent.parent.resolve())) # 之后正常写导入语句即可 from C import d
- 方案2:修改VSCode运行配置,项目内永久生效(无需修改业务代码)
如果使用VSCode默认的Python调试运行功能:
- 打开运行和调试面板,点击创建
launch.json文件,选择对应Python环境 - 在
launch.json的配置项中新增两个参数:
"cwd": "${workspaceFolder}/src", "env": {"PYTHONPATH": "${workspaceFolder}/src"}
如果使用Code Runner插件运行,需要修改插件配置:
打开设置搜索Code Runner: Executor Map,点击编辑settings.json,将Python的运行命令修改为:
"python": "cd $dir/../ && /usr/bin/python3 $fileName"
- 方案3:以模块方式运行脚本(无需修改任何配置和代码)
不要直接点击运行按钮执行b.py,在VSCode终端切换到Project根目录后,执行以下命令即可:
python -m src.a.b
使用-m参数以模块方式运行时,Python会自动将当前工作目录加入sys.path,你也可以把导入语句调整为from src.C import d适配该运行方式。
内容的提问来源于stack exchange,提问作者G. Pro
相关产品推荐
相关产品推荐

