VS Code 中的 Python 环境
Python Environments 扩展将环境和包管理功能引入了 Visual Studio Code 的用户界面。无论您使用的是 venv、uv、conda、pyenv、poetry 还是 pipenv,该扩展都提供了一个统一的界面来创建环境、安装包和切换解释器。
核心功能
- 创建、删除和在环境之间切换
- 安装和管理包
- 终端中的激活 Python 环境
- 将环境分配给特定文件或文件夹(称为“Python 项目”)
该扩展与 Python 扩展协同工作,无需任何设置即可开始使用。
快速入门
大多数用户无需进行任何配置。扩展会自动发现您的 Python 环境并在运行代码时使用它们。
如果您使用基础设置(例如,整个工作区使用一个环境):
- 打开一个 Python 文件
- 检查状态栏以查看当前激活的环境
- 要切换环境,请选择状态栏中的环境控件
需要创建环境?打开 Python 侧边栏,展开 Environment Managers(环境管理器),然后选择 + 按钮。扩展将引导您完成不同的步骤。
用户界面组件
环境发现
以下环境管理器会被自动发现:
| 管理器 | 搜索位置 |
|---|---|
| venv | 工作区文件夹(可通过 workspaceSearchPaths 配置) |
| 系统 Python | PATH、/usr/bin、/usr/local/bin、Windows 注册表、python.org 安装 |
| Conda | 运行 conda info --envs 以查找配置的环境目录 |
| Pyenv | $PYENV_ROOT/versions 或 ~/.pyenv/versions |
| Poetry | 项目 .venv 文件夹和 ~/.cache/pypoetry/virtualenvs |
| Pipenv | ~/.local/share/virtualenvs (Linux/macOS) 或 %USERPROFILE%\.virtualenvs (Windows) |
扩展激活时会自动运行发现过程。扩展使用 Python Environment Tool (PET) Rust 二进制文件来扫描您系统中的 Python 环境。PET 通过检查 PATH(例如查找 conda、pyenv 和 poetry 可执行文件)和已知安装位置来查找环境管理器,然后搜索由这些环境管理器管理的环境。
手动触发刷新:
- 打开命令面板 (
Cmd+Shift+P或Ctrl+Shift+P) - 运行 Python Environments: Refresh All Environment Managers
您也可以点击 Environment Managers 视图标题中的刷新图标。

选择刷新图标以重新扫描环境。
查看已发现的环境
已发现的环境出现在两个位置:
- Environment Managers 视图:在 Python 侧边栏中,环境按管理器类型分组(例如 venv、Conda 等)
- 环境选择器:为项目选择解释器时,所有已发现的环境都会出现在一个统一的列表中

Environment Managers 视图按类型对环境进行分组。
还没有环境?请参阅 Python 项目部分,了解如何使用该扩展创建环境。
配置搜索路径
默认情况下,扩展会使用 glob 模式 ./**/.venv 在您的整个工作区中搜索虚拟环境。这会找到工作区中任何位置名为 .venv 的文件夹。
要在自定义位置发现环境,请更新 python-envs.workspaceSearchPaths 设置。
此设置必须在工作区或文件夹级别配置,不能在用户级别配置。
{
"python-envs.workspaceSearchPaths": ["./**/.venv", "./envs/**", "./my-custom-env"]
}
提示:
- 使用
**进行递归搜索(例如,./**/env会找到任何深度下名为env的文件夹) - 相对路径是相对于工作区文件夹根目录解析的
快速打开搜索路径设置:
- 打开命令面板
- 运行 Python Environments: Configure Search Settings

添加自定义 glob 模式以搜索其他位置。
全局搜索路径:对于工作区外部的环境(如共享的 ~/envs 文件夹),请使用 python-envs.globalSearchPaths。
{
"python-envs.globalSearchPaths": ["/Users/yourname/envs", "/opt/shared-envs"]
}
此设置需要绝对路径,并配置在用户(全局)级别。
旧版设置:如果您之前使用过 python.venvPath 或 python.venvFolders,这些设置会自动合并到新的搜索路径中。建议迁移到 python-envs.globalSearchPaths 以保持未来的兼容性。
选择环境
要使用已发现的环境:
- 状态栏:选择窗口底部显示的 Python 版本
- 命令面板:运行 Python: Select Interpreter 并从列表中进行选择
选定的环境将用于运行代码、调试以及 IntelliSense 等语言功能。
默认情况下,调试器使用您选定的环境。要为调试使用不同的解释器,请在您的 launch.json 调试配置中设置 python 属性。

选择状态栏中的 Python 版本以切换环境。 扩展如何自动选择:当您打开一个工作区而未明确选择环境时,扩展会按以下顺序自动选择:
- 工作区本地虚拟环境 (
.venv,venv) - 全局/系统解释器
要覆盖此优先级顺序,请将 python-envs.defaultEnvManager 设置为首选特定管理器(例如 ms-python.python:conda),或配置 Python 项目以实现按文件夹控制。旧版设置仍然受到支持。
排查环境发现问题
| 症状 | 原因 | 解决方案 |
|---|---|---|
| 环境未列出 | 位置不在搜索路径中 | 将路径添加到 workspaceSearchPaths 或 globalSearchPaths |
| 环境显示为 "(broken)"(已损坏) | 缺少 pyvenv.cfg 或 Python 可执行文件无效 |
重新创建环境或修复损坏的文件 |
| 最近创建的环境丢失 | 发现缓存已过期 | 运行 Refresh All Environment Managers |
| 未找到 Conda 环境 | 未检测到 Conda | 确保 conda 在您的 PATH 中或安装 Conda |
| 设置未生效 | 设置范围错误 | 确保 workspaceSearchPaths 在工作区级别设置,而非用户级别 |
对于高级故障排查,直接运行 Python Environment Tool (PET) 以查看原始发现输出:
- 打开命令面板
- 运行 Python Environments: Run Python Environment Tool (PET) in Terminal...
- 选择一个选项:
- Find All Environments:运行
pet find --verbose以列表形式输出所有发现的环境及详细信息 - Resolve Environment...:输入 Python 可执行文件的路径,以调试特定环境为何未被检测到
- Find All Environments:运行

PET 的详细输出会明确显示发现了哪些环境及其原因。
高级故障排查适用于以下场景:
- 您需要验证环境是否被检测到
- 您想了解环境为何出现在特定管理器下
- 您正在调试路径解析问题
创建、删除和管理环境
创建环境
扩展提供了两种创建环境的方法:快速创建 (Quick Create) 以追求速度,自定义创建 (Custom Create) 以实现精细控制。
快速创建
在 Environment Managers 视图中选择 + 按钮。扩展将执行以下步骤:
- 使用您的默认管理器(默认为 venv,可通过
python-envs.defaultEnvManager配置) - 选择可用的最新 Python 版本
- 将环境命名为
.venv(如果已存在,则为.venv-1、.venv-2等) - 如果找到
requirements.txt或pyproject.toml,则安装依赖项 - 为您的工作区选择新创建的环境
这是获取工作环境的最快方法。

快速创建会构建一个具有合理默认值的环境。
自定义创建
如需更多控制权,请在命令面板中运行 Python: Create Environment 并按照提示操作:
- 选择管理器:venv 或 conda
- 选择 Python 版本:从已发现的解释器(venv)或可用的 Python 版本(conda)中进行选择
- 命名环境:输入自定义名称或接受默认名称
- 安装依赖项:选择从
requirements.txt、pyproject.toml或environment.yml安装

自定义创建允许您配置每一个步骤。
使用 uv 加快创建速度
如果安装了 uv,扩展会自动将其用于 venv 创建和包安装,这比标准工具要快得多。通过以下方式配置:
{
"python-envs.alwaysUseUv": true
}
启用 alwaysUseUv(默认设置)时,uv 会管理所有虚拟环境。将其设为 false 则仅对明确由 uv 创建的环境使用 uv。
支持的管理器
| 管理器 | 快速创建 | 自定义创建 |
|---|---|---|
| venv | ✅ | ✅ |
| conda | ✅ | ✅ |
| pyenv | — | — |
| poetry | — | — |
| pipenv | — | — |
只有 venv 和 conda 支持通过 VS Code 创建环境。其他管理器(pyenv、poetry、pipenv)会发现现有环境,但不会通过扩展创建新环境。请使用它们各自的 CLI 工具来创建环境,扩展随后会自动发现它们。
删除环境
要删除环境:
- 在 Environment Managers 视图中,找到该环境
- 右键点击并选择 Delete(删除)
删除环境会从磁盘中移除环境文件夹。任何使用此环境的项目都将需要您重新选择一个环境。
Python 项目
Python 项目是指您希望与特定环境关联的任何文件或文件夹。默认情况下,您的整个工作区使用一个环境。项目允许您为不同的文件夹分配不同的环境。这对于单体仓库 (mono-repos)、微服务或跨 Python 版本测试至关重要。
为什么要使用项目?
| 场景 | 无项目设置 | 有项目设置 |
|---|---|---|
| 包含后端 + ML 服务的单体仓库 | 两者共享一个解释器 | 每个都有自己的环境 |
| 测试 Python 3.10 vs 3.12 | 手动切换解释器 | 为不同文件夹分配不同版本 |
| 与队友共享工作区 | 每个人手动配置 | 通过 .vscode/settings.json 同步设置 |
如果您整个工作区只有一个环境,则无需显式设置项目。选择一个解释器即可。
Workspace
├── Python Project: backend/
│ └── Environment: .venv (Python 3.12)
│ └── Manager: venv
│
├── Python Project: frontend-utils/
│ └── Environment: .venv (Python 3.10)
│ └── Manager: venv
│
└── Python Project: ml-pipeline/
└── Environment: ml-env (Python 3.11)
└── Manager: conda
哪些功能使用项目分配?
- 运行和调试:使用该项目的环境
- 终端:使用该项目的环境激活
- 测试资源管理器:每个项目都有自己的测试树及其自己的解释器(参见 多项目测试)
Pylance 和 Jupyter 目前为每个工作区使用单个解释器,而不是为每个项目使用环境。请参阅 已知限制。
添加项目
要将文件夹或文件视为单独的项目:
- 在资源管理器中右键点击它
- 选择 Add as Python Project
或者,在 Python Projects 视图中选择 +,并选择以下选项之一:
- Add Existing:手动选择文件/文件夹
- Auto Find:发现带有
pyproject.toml或setup.py的文件夹
添加项目时,其文件夹会自动添加到环境搜索路径中。项目文件夹内的环境(例如 my-project/.venv)会被自动发现,无需更新 workspaceSearchPaths。

添加现有文件夹或自动发现项目。
分配环境
将文件夹设为项目后,即可分配其环境:
- 在 Python Projects 视图中,点击您项目下显示的环境(或“No environment”)
- 从已发现的环境中进行选择
选定的环境将在您在该项目中运行或调试文件时使用。

点击环境以更改它。
设置如何存储
当您将环境分配给项目时,扩展会写入您的工作区设置 (.vscode/settings.json)。
{
"python-envs.pythonProjects": [
{
"path": "backend",
"envManager": "ms-python.python:venv"
},
{
"path": "ml-service",
"envManager": "ms-python.python:conda"
}
]
}
请注意,设置存储的是环境管理器,而不是硬编码的解释器路径。扩展会分别记录您选择的特定环境,并在运行时解析它。这种设计使设置具有可共享性:
- 无机器特定路径:队友不需要
/Users/yourname/.venv - 跨系统可移植:适用于 macOS、Windows 和 Linux
- 环境重建后依然有效:如果您删除并重新创建
.venv,它仍可工作
与队友共享
- 将
.vscode/settings.json提交到您的仓库 - 队友克隆并打开工作区
- 他们创建自己的环境(此处“快速创建”非常好用)
- 扩展自动使用每个项目配置的管理器
环境文件夹(如 .venv)仍需在每台机器上创建。共享的仅是配置,而非环境本身。
删除项目
在 Python Projects 视图中右键点击项目并选择 Remove Python Project。这会删除映射。它不会删除任何文件。
从模板创建项目
要使用正确的结构脚手架一个新项目,请从命令面板运行 Python Envs: Create New Project from Template。选择:
- Package:创建一个包含
pyproject.toml、包目录和测试的文件夹 - Script:创建一个带有内联依赖元数据 (PEP 723) 的单个
.py文件
有关模板结构的详细信息,请参阅完整的 Python 项目指南。
了解更多
有关模板、多根工作区、常见场景和故障排查的详细指导,请参阅完整的 Python 项目指南。
包管理
直接从 VS Code 安装和卸载 Python 包,无需打开终端。
安装包
- 在 Environment Managers 视图中,找到一个环境
- 右键点击并选择 Manage Packages
- 搜索包并选择您想要安装的包
或者从命令面板运行 Python Envs: Manage Packages。

直接从 VS Code 搜索并安装包。
从需求文件安装:您也可以从 requirements.txt、pyproject.toml 或 environment.yml 安装包。出现提示时,选择该文件,扩展会安装所有列出的依赖项。
卸载包
- 在 Environment Managers 视图中展开一个环境以查看已安装的包
- 右键点击一个包并选择 Uninstall Package
按环境划分的包管理器
扩展会根据您的环境自动使用合适的包管理器:
| 环境 | 包管理器 |
|---|---|
| venv | pip |
| conda | conda |
| pyenv | pip |
| poetry | pip |
| pipenv | pip |
| 系统 | pip |
要覆盖默认设置,请设置 python-envs.defaultPackageManager。
使用 uv 加快安装速度
如果安装了 uv 且启用了 python-envs.alwaysUseUv(默认设置),venv 环境中的包安装将使用 uv pip 而不是常规的 pip,这对于大型依赖树来说速度显著提升。
设置与配置
本节涵盖了所有扩展设置、解释器选择的工作原理以及旧版设置迁移。
解释器选择优先级
当您打开工作区时,扩展会通过按顺序检查以下来源来确定使用哪个环境:
| 优先级 | 来源 | 适用条件 |
|---|---|---|
| 1 | pythonProjects[] |
如果您为此路径配置了项目 |
| 2 | defaultEnvManager |
仅当您明确设置了此项(非默认值) |
| 3 | python.defaultInterpreterPath |
旧版设置,如果已配置 |
| 4 | 自动发现 | 查找工作区本地 .venv,然后是全局解释器 |
核心原则:用户配置的设置总是优于默认设置。如果您尚未明确设置 defaultEnvManager(即它仍是内置的默认值),扩展会跳过它并检查下一个优先级。
缓存:为了提高性能,扩展会缓存已解析的环境,但您的显式设置总是优先于缓存值。您永远不必担心过期的缓存覆盖您的选择。
有关解释器选择行为的更多详细信息,请参阅 解释器选择快速参考。
设置何时写入
仅当您做出显式更改时,扩展才会写入设置:
| 操作 | 写入设置? |
|---|---|
| 打开工作区(首次) | ❌ 否 |
| 扩展自动选择环境 | ❌ 否 |
| 您手动选择环境 | ✅ 是,更新 pythonProjects |
| 您创建新环境 | ✅ 是,可能会更新 pythonProjects |
| 您更改 UI 中的设置 | ✅ 是 |
这确保了打开工作区不会将自动生成的条目添加到您的 settings.json 中。
Python Environments 设置
| 设置 | 默认值 | 描述 |
|---|---|---|
python-envs.defaultEnvManager |
ms-python.python:venv |
用于创建环境的默认环境管理器。选项:ms-python.python:venv, ms-python.python:conda |
python-envs.defaultPackageManager |
ms-python.python:pip |
默认包管理器。通常由环境管理器决定。 |
python-envs.pythonProjects |
[] |
项目配置数组。通过 UI 管理,很少手动编辑。 |
python-envs.workspaceSearchPaths |
["./**/.venv"] |
在工作区中搜索环境的 glob 模式。必须在工作区级别设置。 |
python-envs.globalSearchPaths |
[] |
用于全局搜索环境的绝对路径(例如 ~/envs)。 |
python-envs.alwaysUseUv |
true |
在可用时使用 uv 进行 venv 创建和包安装。 |
终端设置
当您在 VS Code 中打开终端时,扩展会自动激活您选择的 Python 环境,以便 python、pip 和相关命令使用正确的解释器。
| 设置 | 默认值 | 描述 |
|---|---|---|
python-envs.terminal.autoActivationType |
command |
确定如何在终端中激活环境。请参阅下文。 |
python-envs.terminal.showActivateButton |
false |
(实验性)在终端中显示激活/取消激活按钮。 |
python.terminal.useEnvFile |
false |
当为 true 时,将 .env 文件中的变量注入到终端。 |
python.envFile |
${workspaceFolder}/.env |
启用 useEnvFile 时要使用的 .env 文件路径。 |
终端激活类型
| 值 | 行为 | 最适合 |
|---|---|---|
shellStartup |
通过 shell 启动脚本激活。终端打开时环境立即激活 | Copilot 终端命令,更整洁的体验 |
command |
终端打开后,以可见方式运行激活命令 | 与所有 shell 的兼容性 |
off |
无自动激活 | 手动控制 |
如果您使用 Copilot 运行终端命令,请使用 shellStartup。它确保在第一条命令执行前环境已激活。这将在未来版本中成为默认设置。
更改 autoActivationType 后,请重启您的终端以使更改生效。要撤销 shellStartup 更改,请运行 Python Envs: Revert Shell Startup Script Changes。
为特定环境打开终端
您可以打开一个激活了任何环境的新终端:
- 在 Environment Managers 视图中,找到该环境
- 右键点击并选择 Open in Terminal

打开一个已激活任意环境的终端。
有关详细的故障排查及激活原理,请参阅 终端自动激活说明。
.env 文件支持
要将来自 .env 文件的环境变量注入到您的终端:
- 在您的工作区根目录创建一个
.env文件或使用python.envFile指定自定义路径 - 将
python.terminal.useEnvFile设置为true
# .env
API_KEY=your-secret-key
DATABASE_URL=postgres:///mydb
变量在终端创建时注入。这对于不应提交到源代码控制的开发凭据非常有用。
旧版设置
这些来自 Python 扩展的设置仍然受到支持,但已有更新的替代方案:
| 旧版设置 | 新的对应设置 | 备注 |
|---|---|---|
python.venvPath |
python-envs.globalSearchPaths |
自动合并。建议迁移。 |
python.venvFolders |
python-envs.globalSearchPaths |
自动合并。建议迁移。 |
python.terminal.activateEnvironment |
python-envs.terminal.autoActivationType |
设置为 off 以禁用。新设置优先。 |
python.defaultInterpreterPath |
— | 仍然支持。用作优先级链中的后备。 |
python.condaPath |
— | 仍然支持。指定自定义 conda 可执行文件位置。 |
设置范围参考
设置根据其配置位置表现不同:
| 设置 | 用户 | 工作区 | 文件夹 |
|---|---|---|---|
defaultEnvManager |
✅ | ✅ | ❌ |
defaultPackageManager |
✅ | ✅ | ❌ |
pythonProjects |
❌ | ✅ | ✅ |
workspaceSearchPaths |
❌ | ✅ | ✅ |
globalSearchPaths |
✅ | ❌ | ❌ |
alwaysUseUv |
✅ | ❌ | ❌ |
terminal.autoActivationType |
✅ | ❌ | ❌ |
核心洞察:workspaceSearchPaths 必须在工作区或文件夹级别(而非用户级别)设置,因为它是相对于工作区文件夹的。
可扩展性
Python Environments 扩展旨在实现可扩展。任何环境或包管理器都可以构建一个接入 Python 侧边栏的扩展,与内置管理器并列显示。这意味着生态系统无需等待此扩展的更新即可支持新工具。
社区成员正在为其他环境管理器构建扩展,例如 Pixi 扩展。
已知限制
Pylance 和多项目工作区
Pylance 不支持在同一工作区中使用具有不同解释器的多个 Python 项目。即使您使用 Python 项目为不同文件夹配置了单独的环境,Pylance 仍会为整个工作区使用单个解释器——通常是与工作区根目录关联的那个。要为不同文件夹使用不同的解释器,请将它们添加为 多根工作区 中的工作区文件夹(文件 > 将文件夹添加到工作区),因为 Pylance 是按工作区文件夹独立运行的。
Jupyter 笔记本
Jupyter 笔记本不使用 Python Environments API 进行环境发现。相反,它们依赖于旧的 Python 扩展 API。这意味着笔记本内核选择器显示的可能与 Environment Managers 视图中的环境集不同。