vscode右下角显示虚拟环境但终端指向系统python,说明解释器选择未同步至终端;需手动重选解释器、关闭所有终端后重启,并启用python.terminal.activateenvironment设置。

VSCode右下角显示虚拟环境,但终端里sys.executable指向系统Python
这说明 VSCode 选了解释器,但终端没同步——两者根本不在一个环境里。不是“没激活”,而是终端压根不认你点的那个路径。
验证方法:在集成终端里运行 python -c "import sys; print(sys.executable)",再对比右下角状态栏显示的路径。不一致就立刻手动重选:
- 按
Ctrl+Shift+P→ 输入Python: Select Interpreter - 从列表里挑带完整路径的项(如
./venv/bin/python或C:\project\venv\Scripts\python.exe),别选括号里只有版本号的“假条目” - 选完后必须关闭所有已打开的终端(包括正在运行的、后台挂起的),再新开一个——旧终端进程缓存了原始
PATH,重启无效
python.terminal.activateEnvironment 没开,终端不会自动激活虚拟环境
VSCode 的解释器选择只影响调试器和 Pylance,不影响终端行为。终端默认只读 shell 的配置,不继承编辑器设置。
必须显式启用自动激活:
- 在项目根目录的
.vscode/settings.json中添加:"python.terminal.activateEnvironment": true - 保存后,关掉所有终端窗口(不是关闭标签页,是整个终端面板)
- 重新打开终端,此时
which python或where python应该返回虚拟环境路径 - 注意:这个设置对调试器无影响,调试器始终走解释器路径,不依赖 shell 激活逻辑
Code Runner 插件绕过 VSCode 解释器配置,导致ModuleNotFoundError
点右上角那个空心三角形 ▶️ 运行 Python 文件时,Code Runner 默认调用系统 python 命令,完全无视你右下角选的解释器。
快速生成专业的 Python 脚本和应用代码。一键创建完整项目结构,支持CLI、API、爬虫、Bot、Django等多种项目类型,包含完整的项目结构、配置文件、依赖管理、测试、README和文档。
临时解决办法很直接:
- 点击 ▶️ 右侧的小箭头(v),选择
Run Python File in Terminal - 这个选项由官方
Python扩展提供,会严格使用当前选中的解释器和环境 - 长期方案:在
settings.json中禁用 Code Runner 的 Python 关联,或改用code-runner.executorMap显式指定解释器路径,例如:"python": "python -u"改为"python": "./venv/bin/python -u"(Linux/macOS)
launch.json 里写死 pythonPath 已过时,容易引发路径错乱
老项目里常见 "pythonPath": "./venv/bin/python" 这种写法,现在不仅冗余,还可能覆盖解释器选择逻辑,尤其当虚拟环境路径变更或跨平台时。
新版调试配置应删掉 pythonPath,改用更稳定的机制:
- 确保
python.defaultInterpreterPath在.vscode/settings.json中正确设置(如"./venv/bin/python") -
launch.json中保留"justMyCode": true和"console": "integratedTerminal"即可,其他路径相关字段全删 - 如果必须指定解释器,用
"python"字段(非pythonPath),值为${command:python.interpreterPath},它会动态读取当前选中的解释器
路径错配往往不是环境本身坏了,而是 VSCode 的多个配置层(UI选择、settings.json、launch.json、插件配置)互相打架。优先清理 settings.json 里的冗余项,再逐层验证,比反复重建虚拟环境更省时间。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










