vscode识别不到venv的根本原因是未手动指定解释器路径且未彻底重启窗口:需通过python: select interpreter→enter interpreter path选择./.venv/bin/python(macos/linux)或..venvscriptspython.exe(windows),然后关闭并重新打开整个vscode窗口,同时启用python.terminal.activateenvironment:true并验证sys.executable输出含.venv。

VSCode 识别不到已创建的 venv,基本不是环境没建好,而是它压根没“看见”或没“选对”——手动指定 python 可执行文件路径 + 彻底重启窗口,是唯一可靠解法。
Python: Select Interpreter 列表里根本没有 .venv 或 venv
VSCode 默认只扫描项目根目录下几个固定名称的文件夹:.venv、venv、env、.env,且不递归查找子目录,也不识别自定义名(比如 myenv 或 py311-venv)。
- 确认你当前在 VSCode 中打开的是整个项目文件夹(File → Open Folder),不是单个
.py文件 - 检查终端里是否真有
.venv:运行ls -la | grep venv(macOS/Linux)或dir .venv(Windows),确保目录存在且非空 - Linux/macOS 下应含
bin/python;Windows 下应含Scriptspython.exe,而不是activate.bat或pythonw.exe - 如果路径是对的但列表仍为空,直接滚动到底部点
Enter interpreter path,手动导航选择:./.venv/bin/python(macOS/Linux)或..venvScriptspython.exe(Windows)
选完解释器,状态栏显示 .venv,但 pip install 还是装进系统 Python
这说明 VSCode 的集成终端默认不自动激活虚拟环境,它只是“知道”该用哪个解释器来跑代码,但新开终端仍是干净的 shell。
- 必须启用
python.terminal.activateEnvironment:按Ctrl + ,打开设置,搜 “terminal activate”,勾选Python > Terminal: Activate Environment - 或者在
.vscode/settings.json中显式写入:"python.terminal.activateEnvironment": true - 改完后必须关闭并重新打开整个 VSCode 窗口(仅 Reload Window 不生效)
- 验证方法:新开终端,运行
python -c "import sys; print(sys.executable)",输出路径应含.venv
F5 调试时仍跑系统 Python,补全失效、ModuleNotFoundError
调试器和语言服务器(Pylance)各自读取配置,不共享“右下角选的那个解释器”——它们依赖 launch.json 和 settings.json 中的硬编码路径。
- 检查
.vscode/launch.json中的"python"字段是否指向虚拟环境内解释器:
macOS/Linux:"python": "./.venv/bin/python"
Windows:"python": ".\.venv\Scripts\python.exe" - 若字段缺失或写成
"python": "python",就会 fallback 到系统 PATH - 补全失效时,先看状态栏左下角是否显示类似
Python 3.11.9 ('.venv': venv);没这个标识就等于没绑定成功 - 已显示但补全仍不准?执行
Ctrl+Shift+P→Python: Restart Language Server - 某些包(如
numpy)含 C 扩展,Pylance 需要完整索引,可能得重启 VSCode 才生效
.vscode/settings.json 里该配什么,以及最容易被忽略的坑
VSCode UI 点选解释器后,会自动往 .vscode/settings.json 写 python.defaultInterpreterPath,但这个字段一旦写错,优先级极高,会覆盖所有其他选择。
- 路径必须是相对路径,以
./开头(Windows 也用正斜杠):"python.defaultInterpreterPath": "./.venv/bin/python" - 绝对路径(如
/home/user/proj/.venv/bin/python)会导致跨机器失效,且可能被 Pylance 拒绝解析 - 路径不能含空格、中文或括号;
.venv目录不能放在 OneDrive、iCloud 或 WSL 挂载路径里——文件系统兼容性问题会让路径瞬间失效 - 检查用户级设置(
%APPDATA%CodeUsersettings.json或~/.config/Code/User/settings.json)中是否有python.defaultInterpreterPath被设为null或错误值,它会覆盖工作区设置 - 最稳的验证方式不是看状态栏,而是运行
python -c "import sys; print(sys.executable)"—— 输出必须明确指向.venv内的python











