必须手动指定解释器路径,VSCode不会自动发现项目根目录下的.venv虚拟环境;需通过“Enter interpreter path...”选择.venvScriptspython.exe(Windows)或.venv/bin/python(macOS/Linux)。

必须手动指定解释器路径,VSCode不会自动发现你创建的虚拟环境。 即使你在项目根目录下用 python -m venv .venv 创建了环境,VSCode 仍默认使用系统 Python,除非你明确告诉它用哪个 python.exe。
为什么“Python: Select Interpreter”找不到你的 .venv?
常见错误现象:点开命令面板输入 Python: Select Interpreter,列表里压根没有 .venv 或 venv 目录下的解释器;或者只显示系统 Python 和已注册的 conda 环境。
原因很直接:
- VSCode 默认只扫描几个固定位置(如
%USERPROFILE%AppDataRoamingPython、conda 的 envs 目录),不会递归遍历你当前工作区里的子文件夹 -
.venv文件夹刚建好时,里面的pyvenv.cfg可能还没写入或权限异常(尤其在 PowerShell 策略受限时) - 你打开 VSCode 的方式不对——不是通过
code .在项目根目录下启动,而是直接双击图标再 File → Open Folder,导致工作区上下文丢失
解决办法:按 Ctrl+Shift+P → 输入 Python: Select Interpreter → 选最底部的 Enter interpreter path... → 手动导航到 .venvScriptspython.exe(Windows)或 .venv/bin/python(macOS/Linux)。
立即学习“Python免费学习笔记(深入)”;
终端不自动激活虚拟环境?这是设计,不是 bug
你在右下角成功选中了 .venv 解释器,但新开集成终端后运行 pip list 仍显示全局包——这不是配置失败,是 VSCode 默认行为。
终端是否激活虚拟环境,和编辑器解释器设置完全解耦。你需要单独配置:
- 确保 VSCode 设置里启用了
python.terminal.executeInFileDir(否则终端可能在用户目录启动) - 在设置中搜索
python.defaultInterpreterPath,把它设为你的.venvScriptspython.exe(这会影响新建终端的默认 Python,但不等于自动activate) - 更可靠的做法:在
settings.json中加这一行:"python.terminal.launchArgs": ["-ExecutionPolicy", "Bypass", "-NoExit", "-Command", "& '.venv\Scripts\Activate.ps1'"](仅限 PowerShell);cmd 用户改用call .venv\Scripts\activate.bat
launch.json 调试器不认虚拟环境?检查 python 路径硬编码
按 F5 启动调试时报错 ModuleNotFoundError,哪怕 pip list 在终端里已显示正确包——大概率是 launch.json 里写了死路径。
典型错误配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"module": "test",
"console": "integratedTerminal",
"python": "C:\Users\xxx\AppData\Local\Programs\Python\Python311\python.exe"
}
]
}
这个 "python" 字段会覆盖右下角选择的解释器,强行指定一个全局路径。正确做法是删掉该字段,让调试器继承工作区解释器;如果必须保留,请把值改成 ".venv\Scripts\python.exe"(Windows)并确保路径相对于工作区根目录。
最容易被忽略的一点:VSCode 的 Python 扩展会在你首次打开含 requirements.txt 或 pyproject.toml 的文件夹时,弹窗问“是否安装推荐包”,但这个提示只出现一次。如果你当时点了“否”,后续补全、类型提示(Pylance)、甚至 import 补全都会降级——得手动在命令面板运行 Python: Trigger Environment Analysis 才能重扫依赖。


















