
VS Code 中创建的 Python 虚拟环境若仍加载系统全局包,通常是因为 pyvenv.cfg 中启用了 include-system-site-packages = true,或未正确激活环境。本文详解排查步骤、修复方法及最佳实践。
vs code 中创建的 python 虚拟环境若仍加载系统全局包,通常是因为 `pyvenv.cfg` 中启用了 `include-system-site-packages = true`,或未正确激活环境。本文详解排查步骤、修复方法及最佳实践。
在 VS Code 中使用 python -m venv myenv 创建虚拟环境后,若发现 pip list 显示大量非本地安装的包(如 numpy、requests 等本不应存在的全局包),说明虚拟环境并未真正“隔离”——这违背了 venv 的核心设计目标。根本原因通常有两个:
✅ 首要原因:pyvenv.cfg 配置被误设
进入你的虚拟环境根目录(例如 ./myenv/),打开 pyvenv.cfg 文件:
home = C:\Python311 include-system-site-packages = true # ← 问题所在!应为 false 或直接删除该行 version = 3.11.9
将 include-system-site-packages = true 改为 false,或彻底删除该行(默认值即为 false)。保存后,重启 VS Code 终端或执行 source myenv/bin/activate(Linux/macOS)或 myenv\Scripts\activate.bat(Windows)。
✅ 次要但常见原因:Python 解释器未正确切换
VS Code 可能仍在使用全局 Python,而非虚拟环境中的解释器。请务必检查窗口右下角状态栏:
- 点击显示的 Python 版本(如
Python 3.11.9 ('myenv')), - 在弹出的命令面板中选择你刚创建的虚拟环境路径(例如
./myenv/Scripts/python.exe(Windows)或./myenv/bin/python(macOS/Linux))。
⚠️ 仅终端显示(venv)提示符不等于解释器已切换——VS Code 的调试、运行、Linter、格式化等均依赖此设置。
✅ 验证是否生效
在已激活且解释器选对的终端中执行:
which python # 应输出 ./myenv/bin/python(macOS/Linux)或 ./myenv/Scripts/python.exe(Windows) python -c "import sys; print(sys.path)" # 输出中不应包含 site-packages 全局路径 pip list --local # 仅显示通过 pip install -e 或 pip install 在当前环境安装的包
? 额外提醒:
- 不要手动修改
PATH或在.bashrc/.zshrc中永久激活 venv——VS Code 会忽略 shell 的激活状态; - 使用
pip install --upgrade pip升级虚拟环境内的 pip,避免因旧版 pip 行为异常导致误判; - 若项目含
requirements.txt,建议始终在激活环境下执行pip install -r requirements.txt,确保依赖纯净。
正确配置后,你的虚拟环境将严格隔离,所有 import 和 pip install 操作仅作用于当前项目,大幅提升可复现性与协作可靠性。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











