VS Code报ModuleNotFoundError主因是解释器选错或路径配置不当:需确认所选Python解释器与pip安装环境一致,确保工作目录为项目根目录,并检查终端与调试器是否使用同一解释器。

Python解释器选错导致ModuleNotFoundError
VS Code里运行Python脚本报ModuleNotFoundError,八成是当前选的解释器压根没装那个包。VS Code不自动继承系统默认Python环境,它只认你手动选的那个python路径。
检查方法:按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(Mac),输入「Python: Select Interpreter」回车,看右下角状态栏显示的路径是否和你用pip install安装包时的环境一致。
- 如果用
conda activate myenv激活了环境,就得选~/miniconda3/envs/myenv/bin/python(macOS/Linux)或...\Anaconda3\envs\myenv\python.exe(Windows) - 如果用
python -m venv .venv建了虚拟环境,就选.venv/bin/python或.venv\Scripts\python.exe - 别选系统自带的
/usr/bin/python3或C:\Python39\python.exe——除非你真在那里装了包
sys.path里缺了项目根目录
即使解释器选对了,VS Code默认不会把当前工作目录加进sys.path。比如你在project/src/main.py里写import utils,而utils.py在project/utils.py,那就会报错——因为Python找不到utils模块。
解决思路不是改sys.path,而是让VS Code知道“项目根在哪”。打开命令面板(Ctrl+Shift+P),运行「Python: Configure Default Settings for Workspace」,在弹出的settings.json里加一行:
立即学习“Python免费学习笔记(深入)”;
"python.defaultInterpreterPath": "./.venv/bin/python", "python.terminal.launchArgs": ["-i"]
更关键的是确保你在VS Code里打开的是整个project文件夹(File → Open Folder),而不是只打开src子目录。否则调试器和终端的工作目录都可能错位。
用了pip install -e .但VS Code没识别
开发本地包时常用pip install -e .做可编辑安装,但VS Code的Python语言服务器(Pylance)有时缓存太强,不主动刷新site-packages里的egg-link文件。
- 先确认
pip list里真有你的包名,且版本显示为0.1.0.dev0这类本地标记 - 重启VS Code的Python语言服务器:按
Ctrl+Shift+P,输入「Python: Restart Language Server」 - 如果还不行,在项目根目录下加一个
.env文件,写PYTHONPATH=.——这会让Pylance和调试器都把当前目录当模块搜索起点
终端和调试器用的不是同一个Python环境
这是最隐蔽的坑:你在集成终端里pip install requests成功了,但按F5调试却报ModuleNotFoundError: No module named 'requests'。原因往往是终端用的是你选的解释器,而调试器偷偷用了另一个——尤其当你没配launch.json时。
查证方式:在代码开头加import sys; print(sys.executable),分别在终端运行和F5调试时看输出路径是否一致。
- 统一方案:删掉项目根目录下的
.vscode/launch.json(如果存在),然后在调试面板点「create a launch.json file」,选「Python File」模板,它会自动生成带"python"字段的配置 - 手动加固:在
launch.json里明确写"python": "./.venv/bin/python"(路径按实际改) - 别依赖「默认调试配置」——它经常 fallback 到系统Python
模块路径问题从来不是“装没装”的问题,而是“谁在找、在哪找、按什么顺序找”的问题。VS Code只是个壳,真正干活的是你选的那个python进程和它脑子里的sys.path。盯着路径看,比反复重装包管用得多。


















