VS Codeで仮想環境が自動認識されない理由と対処法(Mac)


仮想環境を作ったのに、VS Codeの Python: Select Interpreter の一覧に出てこない。まず試すのは次の3つです。上から順に、効く場面が多いものです。

  1. File → Open Folder で、仮想環境があるプロジェクトフォルダごと開き直す(.pyファイル単体で開いていると、探す場所=ワークスペースがありません)
  2. 作った直後なら、コマンドパレットで Python Environments: Refresh All Environment Managers を実行して探し直させる
  3. それでも出なければ、一覧の 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… でファイルを選びます。

VS Codeの実画面。Python: Select Interpreter を実行した直後の一覧で、上部にある Enter interpreter path... に枠を付けた図。一覧には作業フォルダの ./venv/bin/python も表示されている。

この画面はこの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が有効化できないときの対処法にまとめています。

参考にした公式ドキュメント

検証した環境

この記事の調査・再現・執筆は、運営者の指示のもとで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/python3 3.9.6、Homebrew 3.11.14 / 3.12.13
  • 再現は一時フォルダで実施(2026年10月19日)。画面写真は以前このMacで撮影したもの

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

トップへ戻る