Movatterモバイル変換


[0]ホーム

URL:


VS Code February events – Agent Sessions Day on Feb 19th

Dismiss this update

Python environments in VS Code

The Python Environments extension brings environment and package management into Visual Studio Code's UI. The extension provides a unified interface for creating environments, installing packages, and switching interpreters, regardless whether you're usingvenv,uv,conda,pyenv,poetry, orpipenv.

Core features:

  • Creating, deleting, and switching between environments
  • Installing and managing packages
  • Activated Python in terminals
  • Assigning environments to specific files or folders (called "Python projects")

The extension works alongside thePython extension and requires no setup to get started.

Quick start

Most users don't need to configure anything. The extension automatically discovers your Python environments and uses them when running code.

If you have a basic setup, such as one environment for your whole workspace:

  1. Open a Python file
  2. Check the Status Bar to see which environment is active
  3. To switch environments, select the environment control in the Status Bar

Need to create an environment? Open the Python sidebar, expandEnvironment Managers, and select the+ button. The extension walks you through the different steps.

User interface components

Environment discovery

The following environment managers are discovered automatically:

ManagerSearch locations
venvWorkspace folders (configurable viaworkspaceSearchPaths)
System PythonPATH,/usr/bin,/usr/local/bin, Windows Registry, python.org installs
CondaRunsconda info --envs to find configured environment directories
Pyenv$PYENV_ROOT/versions or~/.pyenv/versions
PoetryProject.venv folders and~/.cache/pypoetry/virtualenvs
Pipenv~/.local/share/virtualenvs (Linux/macOS) or%USERPROFILE%\.virtualenvs (Windows)

Discovery runs automatically when the extension activates. The extension uses the Python Environment Tool (PET) Rust binary that scans your system for Python environments. PET finds environment managers by checking your PATH (for example, by looking forconda,pyenv, andpoetry executables) and known installation locations, and then searches for environments managed by each of these environment managers.

To manually trigger a refresh:

  1. Open the Command Palette (Cmd+Shift+P orCtrl+Shift+P)
  2. RunPython Environments: Refresh All Environment Managers

You can also click the refresh icon in theEnvironment Managers view header.

Screenshot showing the Environment Managers panel in the Python sidebar with the refresh button highlighted in the view header.

Select the refresh icon to rescan for environments.

View discovered environments

Discovered environments appear in two places:

  • Environment Managers view: in the Python sidebar, environments are grouped by manager type (for example, venv, Conda, and more)
  • Environment selection: when selecting an interpreter for a project, all discovered environments appear in a unified list

Screenshot showing the Environment Managers tree view with Global, venv, and Conda sections expanded, displaying discovered Python environments grouped by manager type.

The Environment Managers view groups environments by type.

Tip

Don't have an environment yet? See thePython Projects section for information on how to create one with the extension.

Configure search paths

By default, the extension searches your entire workspace for virtual environments using the glob pattern./**/.venv. This finds any folder named.venv anywhere in your workspace.

To discover environments in custom locations, update thepython-envs.workspaceSearchPaths setting:

Note

This setting must be configured at the workspace or folder level, not user level.

{  "python-envs.workspaceSearchPaths": ["./**/.venv","./envs/**","./my-custom-env"]}

Tips:

  • Use** for recursive searches (for example,./**/env finds any folder namedenv at any depth)
  • Relative paths resolve from your workspace folder root

To quickly open search path settings:

  1. Open the Command Palette
  2. RunPython Environments: Configure Search Settings

Screenshot showing the VS Code Settings editor filtered to the Python Environments extension, displaying the python-envs Workspace Search Paths setting with a glob pattern entry.

Add custom glob patterns to search additional locations.

Global search paths: For environments outside your workspace (like a shared~/envs folder), usepython-envs.globalSearchPaths:

{  "python-envs.globalSearchPaths": ["/Users/yourname/envs","/opt/shared-envs"]}

This setting requires absolute paths and is configured at the user (global) level.

Legacy settings: If you previously usedpython.venvPath orpython.venvFolders, these are automatically merged with the new search paths. Consider migrating topython-envs.globalSearchPaths for future compatibility.

Select an environment

To use a discovered environment:

  • Status Bar: select the Python version shown at the bottom of the window
  • Command Palette: runPython: Select Interpreter and choose from the list

The selected environment is used for running code, debugging, and language features like IntelliSense.

Tip

By default, the debugger uses your selected environment. To use a different interpreter for debugging, set thepython property in yourlaunch.json debug configuration.

Screenshot showing the Select Interpreter quick pick with the currently selected interpreter at the top, and a list of discovered environments labeled by type such as Conda, Global, and Workspace.

Select the Python version in the Status Bar to switch environments.How the extension auto-selects: When you open a workspace without explicitly selecting an environment, the extension chooses one automatically in the following order:

  1. Workspace-local virtual environments (.venv,venv)
  2. Global/system interpreters

To override this priority order, setpython-envs.defaultEnvManager to prefer a specific manager (for example,ms-python.python:conda), or configurePython Projects for per-folder control. The legacy setting is still supported as well.

Troubleshoot environment discovery

SymptomCauseSolution
Environment not listedLocation not in search pathsAdd the path toworkspaceSearchPaths orglobalSearchPaths
Environment shows as "(broken)"Missingpyvenv.cfg or invalid Python executableRecreate the environment or fix the broken files
Recently created environment missingDiscovery cache is staleRunRefresh All Environment Managers
Conda environment not foundConda not detectedEnsureconda is in your PATH or install Conda
Settings not taking effectWrong setting scopeEnsureworkspaceSearchPaths is set at workspace level, not user level

For advanced troubleshooting, run the Python Environment Tool (PET) directly to see raw discovery output:

  1. Open the Command Palette
  2. RunPython Environments: Run Python Environment Tool (PET) in Terminal...
  3. Choose an option:
    • Find All Environments: runspet find --verbose to list all discovered environments with detailed output
    • Resolve Environment...: enter a path to a Python executable to debug why a specific environment isn't being detected

Screenshot showing the VS Code terminal with verbose output from the Python Environment Tool, displaying a breakdown of search times by locator, environment counts by type, and discovered managers.

PET verbose output shows exactly what environments are discovered and why.

Advanced troubleshooting is useful for the following scenarios:

  • You need to verify an environment is being detected
  • You want to understand why an environment appears under a specific manager
  • You're debugging path resolution issues

Create, delete, and manage environments

Create environments

The extension provides two ways to create environments:Quick Create for speed, andCustom Create for control.

Quick Create

Select the+ button in the Environment Managers view. The extension performs the following steps:

  • Uses your default manager (venv by default, configurable viapython-envs.defaultEnvManager)
  • Picks the latest Python version available
  • Names the environment.venv (or.venv-1,.venv-2 if one already exists)
  • Installs dependencies fromrequirements.txt orpyproject.toml if found
  • Selects the new environment for your workspace

This is the fastest way to get a working environment.

Screenshot showing the Quick Create flow with the plus button in the Environment Managers view header, a prompt to select projects, and a status bar notification indicating the environment is being created.

Quick Create builds an environment with sensible defaults.

Custom Create

For more control, runPython: Create Environment from the Command Palette and walk through the prompts:

  1. Choose manager: venv or conda
  2. Select Python version: pick from discovered interpreters (venv) or available Python versions (conda)
  3. Name your environment: enter a custom name or accept the default
  4. Install dependencies: choose to install fromrequirements.txt,pyproject.toml, orenvironment.yml

Screenshot showing the Custom Create flow with the Select packages to install dialog, listing available packages with checkboxes and an install count indicator.

Custom Create lets you configure each step.

Using uv for faster creation

Ifuv is installed, the extension uses it automatically for venv creation and package installation, which is significantly faster than standard tools. Configure this with:

{  "python-envs.alwaysUseUv":true}

WhenalwaysUseUv is enabled (the default), uv manages all virtual environments. Set it tofalse to only use uv for environments explicitly created by uv.

Supported managers

ManagerQuick CreateCustom Create
venv
conda
pyenv
poetry
pipenv
Note

Onlyvenv andconda support creating environments from VS Code. Other managers (pyenv, poetry, pipenv) discover existing environments but don't create new ones through the extension. Use their respective CLI tools to create environments, and then the extension will discover them automatically.

Delete environments

To delete an environment:

  1. In theEnvironment Managers view, find the environment
  2. Right-click and selectDelete

Deleting an environment removes the environment folder from disk. Any projects that use this environment will require that you select a new one.

Python projects

APython project is any file or folder you want to associate with a specific environment. By default, your entire workspace uses one environment. Projects let you assign different environments to different folders. This is essential for mono-repos, microservices, or testing across Python versions.

Why use projects?

ScenarioWithout projectsWith projects
Mono-repo with backend + ML serviceBoth share one interpreterEach gets its own environment
Testing Python 3.10 vs 3.12Manually switch interpretersAssign different versions to different folders
Shared workspace with teammatesEveryone configures manuallySettings sync via.vscode/settings.json

If you only have one environment for your whole workspace, you don't need to set up projects explicitly. Select an interpreter and you're done.

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

What uses project assignments?

  • Running and debugging: uses the project's environment
  • Terminals: activated with the project's environment
  • Test Explorer: each project gets its own test tree with its own interpreter (seeMulti-Project Testing)
Note

Pylance and Jupyter currently use a single interpreter per workspace, not per-project environments. SeeKnown Limitations.

Add a project

To treat a folder or file as a separate project:

  1. Right-click it in the Explorer
  2. SelectAdd as Python Project

Alternatively, select+ in thePython Projects view and choose either of these options:

  • Add Existing: select files/folders manually
  • Auto Find: discover folders withpyproject.toml orsetup.py
Tip

When you add a project, its folder is automatically added to the environment search path. Environments inside project folders (for example,my-project/.venv) are discovered automatically without the need to updateworkspaceSearchPaths.

Screenshot showing the Python Projects panel with the Add Python Project dropdown menu displaying Add Existing and Auto Find options.

Add existing folders or auto-discover projects.

Assign an environment

Once a folder is a project, assign its environment:

  1. In thePython Projects view, click the environment shown under your project (or "No environment")
  2. Select from discovered environments

The selected environment is used whenever you run or debug files in that project.

Screenshot showing the Python Projects view with two projects listed, each assigned a Python environment, and the Environment Managers section below with available interpreters and installed packages.

Click the environment to change it.

How settings are stored

When you assign an environment to a project, the extension writes to your workspace settings (.vscode/settings.json):

{  "python-envs.pythonProjects": [    {      "path":"backend",      "envManager":"ms-python.python:venv"    },    {      "path":"ml-service",      "envManager":"ms-python.python:conda"    }  ]}

Notice that settings store theenvironment manager, not hardcoded interpreter paths. The extension remembers which specific environment you selected separately, and resolves it at runtime. This design makes settings shareable:

  • No machine-specific paths: teammates don't need/Users/yourname/.venv
  • Portable across systems: works on macOS, Windows, and Linux
  • Survives environment recreation: if you delete and recreate.venv, it still works

Sharing with teammates:

  1. Commit.vscode/settings.json to your repo
  2. Teammates clone and open the workspace
  3. They create their own environments (Quick Create works great here)
  4. The extension automatically uses each project's configured manager
Note

The environmentfolders (like.venv) still need to be created on each machine. Only the configuration is shared, not the environment itself.

Remove a project

Right-click a project in thePython Projects view and selectRemove Python Project. This removes the mapping. It does not delete any files.

Create a project from a template

To scaffold a new project with the right structure, runPython Envs: Create New Project from Template from the Command Palette. Choose between:

  • Package: creates a folder withpyproject.toml, package directory, and tests
  • Script: creates a single.py file with inline dependency metadata (PEP 723)

See the fullPython Projects guide for details on template structure.

Learn more

For detailed guidance on templates, multi-root workspaces, common scenarios, and troubleshooting, see the fullPython Projects guide.

Package management

Install and uninstall Python packages directly from VS Code without opening a terminal.

Install packages

  1. In theEnvironment Managers view, find an environment
  2. Right-click and selectManage Packages
  3. Search for packages and select the ones you want to install

Or runPython Envs: Manage Packages from the Command Palette.

Screenshot showing the Manage Packages dialog with a search box at the top and a scrollable list of packages with checkboxes, indicating installed packages and the total number selected for installation.

Search and install packages directly from VS Code.

Installing from a requirements file: You can also install packages fromrequirements.txt,pyproject.toml, orenvironment.yml. When prompted, select the file, and the extension installs all listed dependencies.

Uninstall packages

  1. Expand an environment in theEnvironment Managers view to see installed packages
  2. Right-click a package and selectUninstall Package

Package managers by environment

The extension automatically uses the appropriate package manager based on your environment:

EnvironmentPackage Manager
venvpip
condaconda
pyenvpip
poetrypip
pipenvpip
systempip

To override the default, setpython-envs.defaultPackageManager.

Faster installation with uv

Ifuv is installed andpython-envs.alwaysUseUv is enabled (the default), package installation in venv environments usesuv pip instead of regularpip, which is significantly faster for large dependency trees.

Settings and configuration

This section covers all extension settings, how interpreter selection works, and legacy settings migration.

Interpreter selection priority

When you open a workspace, the extension determines which environment to use by checking these sources in order:

PrioritySourceWhen it applies
1pythonProjects[]If you've configured a project for this path
2defaultEnvManagerOnly if you've explicitly set this (not the default value)
3python.defaultInterpreterPathLegacy setting, if configured
4Auto-discoveryFinds workspace-local.venv, then global interpreters

Key principle: User-configured settings always win over defaults. If you haven't explicitly setdefaultEnvManager (it has the built-in default), the extension skips it and checks the next priority.

Caching: The extension caches resolved environments for performance, but your explicit settings always take precedence over cached values. You never need to worry about stale cache overriding your choices.

For more details on interpreter selection behavior, see theInterpreter Selection Quick Reference.

When settings are written

The extension only writes to settings when you make an explicit change:

ActionWrites to settings?
Open workspace (first time)❌ No
Extension auto-selects an environment❌ No
You manually select an environment✅ Yes, updatespythonProjects
You create a new environment✅ Yes, may updatepythonProjects
You change settings in UI✅ Yes

This ensures that opening a workspace does not add auto-generated entries to yoursettings.json.

Python Environments settings

SettingDefaultDescription
python-envs.defaultEnvManagerms-python.python:venvDefault environment manager for creating environments. Options:ms-python.python:venv,ms-python.python:conda
python-envs.defaultPackageManagerms-python.python:pipDefault package manager. Usually determined by the environment manager.
python-envs.pythonProjects[]Array of project configurations. Managed via UI, rarely edited manually.
python-envs.workspaceSearchPaths["./**/.venv"]Glob patterns to search for environments in your workspace. Must be set at workspace level.
python-envs.globalSearchPaths[]Absolute paths to search for environments globally (for example,~/envs).
python-envs.alwaysUseUvtrueUse uv for venv creation and package installation when available.

Terminal settings

When you open a terminal in VS Code, the extension automatically activates your selected Python environment so thatpython,pip, and related commands use the correct interpreter.

SettingDefaultDescription
python-envs.terminal.autoActivationTypecommandDetermines how environments are activated in terminals. See below.
python-envs.terminal.showActivateButtonfalse(Experimental) Show activate/deactivate button in terminal.
python.terminal.useEnvFilefalseWhentrue, injects variables from.env files into terminals.
python.envFile${workspaceFolder}/.envPath to the.env file to use whenuseEnvFile is enabled.

Terminal activation types:

ValueBehaviorBest for
shellStartupActivates via shell startup scripts. The environment is active immediately when the terminal opensCopilot terminal commands, cleaner experience
commandRuns the activation command visibly in the terminal after it opensCompatibility with all shells
offNo automatic activationManual control
Tip

UseshellStartup if you use Copilot to run terminal commands. It ensures that the environment is active before the first command executes. This will become the default in a future release.

Note

After changingautoActivationType, restart your terminals for the change to take effect. To undoshellStartup changes, runPython Envs: Revert Shell Startup Script Changes.

Opening a terminal for a specific environment:

You can open a new terminal with any environment activated:

  1. In theEnvironment Managers view, find the environment
  2. Right-click and selectOpen in Terminal

Screenshot showing the Environment Managers tree view with a venv environment selected and the Create Python Terminal tooltip visible on the terminal icon button.

Open a terminal with any environment activated.

For detailed troubleshooting and how activation works under the hood, seeTerminal Auto-Activation Explained.

.env file support

To inject environment variables from a.env file into your terminals:

  1. Create a.env file in your workspace root or specify a custom path withpython.envFile
  2. Setpython.terminal.useEnvFile totrue
# .envAPI_KEY=your-secret-keyDATABASE_URL=postgres://localhost/mydb

Variables are injected when terminals are created. This is useful for development credentials that shouldn't be committed to source control.

Legacy settings

These settings from the Python extension are still supported but have newer equivalents:

Legacy settingNew equivalentNotes
python.venvPathpython-envs.globalSearchPathsAutomatically merged. Consider migrating.
python.venvFolderspython-envs.globalSearchPathsAutomatically merged. Consider migrating.
python.terminal.activateEnvironmentpython-envs.terminal.autoActivationTypeSet tooff to disable. New setting takes precedence.
python.defaultInterpreterPathStill supported. Used as fallback in priority chain.
python.condaPathStill supported. Specifies custom conda executable location.

Settings scope reference

Settings behave differently depending on where they're configured:

SettingUserWorkspaceFolder
defaultEnvManager
defaultPackageManager
pythonProjects
workspaceSearchPaths
globalSearchPaths
alwaysUseUv
terminal.autoActivationType

Key insight:workspaceSearchPaths must be set at workspace or folder level (not user level) because it's relative to workspace folders.

Extensibility

The Python Environments extension is designed to be extensible. Any environment or package manager can build an extension that plugs into the Python sidebar, appearing alongside the built-in managers. This means the ecosystem can grow to support new tools without waiting for updates to this extension.

Community members are building extensions for additional environment managers like thePixi Extension.

Known limitations

Pylance and multi-project workspaces

Pylance does not support multiple Python projects with different interpreters in the same workspace. Even if you configure separate environments for different folders usingPython Projects, Pylance uses a single interpreter for the entire workspace—typically the one associated with the workspace root. To use different interpreters for different folders, add them as workspace folders in amulti-root workspace (File >Add Folder to Workspace), since Pylance runs independently per workspace folder.

Jupyter notebooks

Jupyter notebooks do not use the Python Environments API for environment discovery. Instead, they rely on the older Python extension API. This means notebook kernel selection may show a different set of environments than theEnvironment Managers view.

Next steps

02/04/2026

    [8]ページ先頭

    ©2009-2026 Movatter.jp