仮想環境を作ったのに、VS Codeの Python: Select Interpreter の一覧に出てこない。まず試すのは次の3つです。上から順に、効く場面が多いものです。
- File → Open Folder で、仮想環境があるプロジェクトフォルダごと開き直す(.pyファイル単体で開いていると、探す場所=ワークスペースがありません)
- 作った直後なら、コマンドパレットで Python Environments: Refresh All Environment Managers を実行して探し直させる
- それでも出なければ、一覧の Enter interpreter path… から
.venv/bin/pythonを直接指定する
「どこに置けば見つかるのか」は、VS Codeが実際に使っている探索ツールをこのMacで動かして確かめました。このサイトの運営に使っているMac(macOS 26.6.2)で、2026年10月19日に一時フォルダで再現した結果です。
見つかる場所・見つからない場所を試した
VS Codeの公式ドキュメントによると、Python Environments拡張機能は環境探しに PET(Python Environment Tool)という付属のプログラムを使います。このMacでは ~/.vscode/extensions/ms-python.vscode-python-envs-1.40.0-darwin-arm64/python-env-tools/bin/pet にあったので、それをターミナルから直接動かしました(以下では pet と略します)。VS Codeの画面は開いていません。
試したのは次の配置です。名前や深さを変えた仮想環境を5つ作りました。
itm110/
├── proj/ ← ワークスペースとして開くフォルダ
│ ├── .venv/ ← 直下・名前 .venv
│ ├── venv/ ← 直下・名前 venv
│ ├── myenv/ ← 直下・独自の名前
│ ├── tools/deep/.venv/ ← 2階層下
│ └── src/
└── outside/.venv/ ← ワークスペースの外
proj の中で、ワークスペースだけを探すオプションを付けて実行した結果です(出力は抜粋)。
$ pet find --workspace --list
Environment (Venv)
Executable : /private/tmp/itm110/proj/.venv/bin/python
Version : 3.9.7
Environment (Venv)
Executable : /private/tmp/itm110/proj/venv/bin/python
Version : 3.12.13
Environment (Venv)
Executable : /private/tmp/itm110/proj/myenv/bin/python
Version : 3.9.6
Environments (3):
読み取れることは次のとおりです。
- ワークスペース直下なら、名前は関係なく見つかった(
.venv・venv・myenvの3つ) tools/deep/.venvと、ワークスペースの外のoutside/.venvは出てこなかった
深い場所の環境も、探す場所として渡せば見つかります。
$ pet find --list --workspace tools/deep
Environment (Venv)
Executable : tools/deep/.venv/bin/python
Environments (1):
ただし、VS Codeの拡張機能はPETを単体で動かすのとは違い、既定で ./**/.venv(ワークスペース内のどの深さでも、名前が .venv のフォルダ)も探すと公式ドキュメントに書かれています。GUIでは確かめていませんが、深い場所に置くなら名前を .venv にしておくのが安全です。それ以外の場所は、ワークスペースの .vscode/settings.json で探す場所を足せます。
{
"python-envs.workspaceSearchPaths": ["./**/.venv", "./tools/deep/.venv"]
}
ワークスペースの外(例:ホーム直下にまとめた仮想環境)は、ユーザー設定の python-envs.globalSearchPaths に絶対パスで書きます。この2つの設定は書ける場所が決まっていて、前者はワークスペース側、後者はユーザー側だけです。
確実な方法:パスを直接指定する
探索に頼らずに選ぶ方法です。⌘ + Shift + P → Python: Select Interpreter → Enter interpreter path… と進み、.venv/bin/python を入力するか、Find… でファイルを選びます。

この画面はこのMacの実際の一覧です。作業フォルダの ./venv/bin/python(Recommended)のほかに、Anacondaの 3.9.7、Homebrewの 3.12.13 と 3.11.14、/usr/bin/python3 の 3.9.6 が並んでいます。似たバージョンが多いので、バージョンではなく右側のパスで選ぶようにしています。
仮想環境そのものを確認する
一覧に出ない、または選んでも動かない場合は、仮想環境が壊れていないかを見ます。中身が揃っていれば bin に python があり、直下に pyvenv.cfg があります。
$ ls venv/bin
activate
activate.csh
activate.fish
Activate.ps1
python
python3
python3.12
$ ls -l venv/bin/python3.12
lrwxr-xr-x 1 me wheel 44 10月 19 00:07 venv/bin/python3.12 -> /opt/homebrew/opt/python@3.12/bin/python3.12
公式ドキュメントのトラブルシューティング表では、pyvenv.cfg が無い、またはPython本体が無効な環境は「(broken)」と表示されるとされています。その場合は作り直します。
Homebrewで作った仮想環境の python3.12 は、/opt/homebrew/opt/python@3.12/ を指すリンクでした。opt 側のパスなので 3.12 系の中での更新ではリンク先は変わりませんが、python@3.12 自体を消すとこの仮想環境は動かなくなります。
Macで気をつけたい点:python3 -m venv の元になるPython
今回 python3 -m venv .venv で作った .venv は、Homebrewではなく Anaconda の 3.9.7 を元にしていました。このMacではPATHの先頭がAnacondaだからです。元になったPythonは pyvenv.cfg で確かめられます。
$ cat .venv/pyvenv.cfg
home = /Users/me/opt/anaconda3/bin
include-system-site-packages = false
version = 3.9.7
意図したPythonで作りたいときは、/opt/homebrew/bin/python3.12 -m venv .venv のようにフルパスで呼びます。このMacのHomebrewには python3 という名前が無く、python3.12 のようにバージョン付きの名前だけがありました。
選べたあとにやること
選択を変えても、すでに開いているターミナルは前の環境のままです。ターミナルをゴミ箱アイコンで終了して開き直します。ずれたまま pip install すると別の場所に入るので、その症状はpip install が反映されないときの確認ポイントを、選択中のPythonの確かめ方とプロジェクトごとの固定は選択されているPythonが違うときの確認・変更方法を参照してください。仮想環境の有効化自体でつまずく場合はvenvが有効化できないときの対処法にまとめています。
参考にした公式ドキュメント
- Python environments in VS Code(Visual Studio Code):探索の対象、PET、
./**/.venv、workspaceSearchPathsとglobalSearchPaths、更新コマンド、(broken) の条件 - venv — 仮想環境の作成(Python ドキュメント)
検証した環境
この記事の調査・再現・執筆は、運営者の指示のもとでAIエージェント(AnthropicのClaude)が行い、公開するかどうかは運営者が決めています。載せた出力は、そのAIエージェントがこのMacで実際にコマンドを実行して得たものです。
- macOS 26.6.2(Apple Silicon)
- VS Code 1.136.1、Python拡張機能 2026.10.0、Python Environments拡張機能 1.40.0(同梱の pet 0.1.0 を使用)
- Python:Anaconda 3.9.7(PATH先頭)、
/usr/bin/python33.9.6、Homebrew 3.11.14 / 3.12.13 - 再現は一時フォルダで実施(2026年10月19日)。画面写真は以前このMacで撮影したもの
コメントを残す