vscode不会自动识别.venv目录,必须手动指定解释器路径:windows选./.venv/scripts/python.exe,macos/linux选./.venv/bin/python,路径须为相对路径且指向python可执行文件本身;同时需配置python.defaultinterpreterpath和python.terminal.activateenvironment:true,并重启vscode验证sys.executable输出含.venv。

VSCode不会自动识别你创建的.venv目录,必须手动指定解释器路径——选错、漏选、路径写成绝对路径或指向文件夹而非python可执行文件,都会导致补全失效、ModuleNotFoundError、调试跑错环境。
Python: Select Interpreter 选什么路径?
VSCode只认解释器可执行文件本身,不是整个.venv文件夹。路径必须是相对于工作区根目录的相对路径,且明确指向python二进制文件:
- Windows:
./.venv/Scripts/python.exe(不是activate.bat,也不是python软链接) - macOS/Linux:
./.venv/bin/python(不是activate脚本,也不是python3符号链接) - 如果用
venv而非.venv,路径对应为./venv/Scripts/python.exe或./venv/bin/python - 路径里不能含空格或中文,否则
Pylance可能解析失败;建议统一用.venv,Git和VSCode默认忽略它
为什么python -m venv .venv后VSCode还是找不到?
VSCode不递归扫描,只检查项目根目录下几个固定名(.venv、venv、env),且要求结构完整。常见失效原因:
华为云 Python SDK 查询工具。自动发现已安装 SDK 的服务包、Client类、API 方法、入参详情、类信息(__init__ 参数、属性、类型、描述),支持关键字搜索,快速定位目标 API 使用方法。
-
python -m venv .venv之后没立刻选解释器,而是先装包——VSCode可能误把系统Python当作默认,之后再选也容易缓存旧状态 - 在WSL中创建但VSCode运行在Windows端,路径
/home/user/project/.venv无法直接访问,需用\wsl$前缀或改在WSL中启动VSCode - 用
virtualenv .venv创建的环境,VSCode兼容性不如python -m venv生成的 - 创建时用了
python3 -m venv .venv(macOS/Linux),但VSCode Python扩展有时对python3生成的pyvenv.cfg读取不稳定,优先用python -m venv
终端不自动激活?两个设置必须配齐
选对解释器只是第一步。VSCode的集成终端默认不激活虚拟环境,pip install仍可能装到全局。必须确认:
-
python.defaultInterpreterPath已在.vscode/settings.json中正确写入(如"./.venv/bin/python") -
python.terminal.activateEnvironment设为true(默认是true,但有时被用户级设置覆盖) - 改完设置后必须重启VSCode——
Pylance会缓存旧环境的类型信息,不重启补全仍不准
验证是否真生效:别信状态栏,要看sys.executable
状态栏显示Python 3.x ('.venv': venv)只是表面,真正判断依据是运行时实际加载的解释器:
- 新建
test.py,内容为import sys; print(sys.executable),运行它 - 输出必须含
.venv(如/path/to/project/.venv/bin/python),才算真正生效 - Jupyter Notebook的kernel是独立配置的,右上角kernel下拉菜单必须手动选匹配的
.venv环境,和编辑器解释器无关
最易被忽略的是:VSCode的Python解释器配置、终端激活行为、Jupyter kernel三者完全解耦,各自需要单独确认;哪怕前两者都对了,Notebook仍可能跑在系统环境里。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










