VSCode里如何配置Python虚拟环境?【教程】

12次阅读

vscode通过python扩展识别虚拟环境,需手动指定解释器路径;自动扫描仅限项目根目录下的.venv、venv、env等标准命名目录,且要求结构完整;conda环境必须手动输入绝对路径;验证需运行sys.executable和pip测试。

VSCode里如何配置Python虚拟环境?【教程】

VSCode 本身不管理 Python 虚拟环境,它只负责识别和使用你已创建好的环境。关键不是“配置”,而是让 VSCode 正确找到 python 可执行文件的路径。

如何让 VSCode 找到你的虚拟环境?

VSCode 通过 Python 扩展读取工作区或用户级设置中的 python.defaultInterpreterPath,或者自动扫描常见目录(如 .venvvenvenv)。但自动发现经常失败,尤其在多项目混用或自定义路径时。

  • 推荐做法:打开项目根目录后,按 Ctrl+Shift+Pwindows/linux)或 Cmd+Shift+PmacOS),输入并选择 Python: select Interpreter
  • 如果列表里没出现你的环境,点击 Enter interpreter path...,然后手动定位到虚拟环境里的 pythonwindowsvenvScriptspython.exemacOS/Linux 是 venv/bin/python
  • 选中后,VSCode 会在当前工作区生成 .vscode/settings.json,写入类似:
    {   "python.defaultInterpreterPath": "./venv/bin/python" }

为什么 python -m venv venv 创建的环境有时不被识别?

VSCode 的 Python 扩展默认只扫描项目根目录下的特定名称子目录(.venvvenvenv),且要求该目录下存在 pyvenv.cfg 和有效的 bin/Scripts/ 子目录。常见失效原因:

  • 你在项目外运行了 python -m venv venv,导致 venv 目录不在当前 VSCode 工作区根目录下
  • 你用了非标准路径,比如 python -m venv ../myenv,VSCode 不会跨目录查找
  • 你在 WSL 中创建了环境,但 VSCode 运行在 Windows 端,无法直接访问 WSL 路径(需用 \wsl$ 前缀或在 WSL 中启动 VSCode)

使用 conda 环境时要注意什么?

Conda 环境路径不遵循 venv 结构,VSCode 无法自动发现,必须手动指定解释器路径。

立即学习Python免费学习笔记(深入)”;

  • 先在终端激活 conda 环境:conda activate myenv
  • 再运行 which pythonmacos/Linux)或 where python(Windows)获取绝对路径
  • 在 VSCode 中通过 Python: Select InterpreterEnter interpreter path... 粘贴该路径
  • 注意:不要选 conda 自带的 base 环境的 python,除非你明确想用它;conda 环境路径通常形如 ~/miniconda3/envs/myenv/bin/pythonC:UsersXXXMiniconda3envsmyenvpython.exe

检查是否真的生效了?

光看右下角状态栏显示的 Python 版本还不够。真正验证方式是:

  • 新建一个 .py 文件,输入
    import sys print(sys.executable) print(sys.path)

    ,运行它 —— 输出的 sys.executable 必须和你在 Python: Select Interpreter 中选的一致

  • 安装包后(如 pip install requests),确保在 VSCode 的集成终端中运行 python -c "import requests" 不报错;如果报 ModuleNotFoundError,说明终端没继承当前解释器环境(可能终端未重启,或 VSCode 启动时没加载 shell 配置)
  • 调试时断点不触发、launch.jsonCannot find module,大概率是 python 路径没对齐

最常被忽略的是:VSCode 集成终端默认不会自动激活你选中的解释器对应的环境,它只是复用系统 shell。你需要手动在终端里运行 source venv/bin/activate(或对应平台的激活命令),或者在 .vscode/settings.json 中配置 terminal.integrated.env.* 来预设环境变量——但这属于进阶控制,多数人只需记住「选解释器 ≠ 终端自动激活」。

text=ZqhQzanResources