ターミナルでは動くのに、VS Codeの実行ボタンでは ModuleNotFoundError になる、表示されるバージョンが違う。この場合、VS Codeが選んでいるPythonとターミナルのPythonが別物です。
確かめ方と直し方を先に書きます。
- 次の2行を書いたファイルを、実行ボタンとターミナルの両方で動かし、表示されたパスを比べる
- 違っていたら、
⌘ + Shift + P→ Python: Select Interpreter で使いたいPythonを選ぶ - ターミナルをゴミ箱アイコンで終了して、開き直す
import sys
print(sys.executable)
このサイトの運営に使っているMac(macOS 26.6.2)にはPythonが4つ入っていて、実際に取り違えが起きやすい状態です。2026年10月19日に一時フォルダで確かめた結果をもとに書いています。
いま選ばれているPythonを見る
選択中のPythonは、ウィンドウ右下のステータスバーに出ます。下の画面では 3.9.6 ('venv': venv) と表示されています。

ただ、ステータスバーはバージョンと環境名しか出しません。このMacには 3.9.x が3つ(Anacondaの 3.9.7、/usr/bin/python3 の 3.9.6、それを元にした仮想環境)あるので、バージョンでは区別がつきません。確実なのは sys.executable でパスを出すことです。
同じスクリプトを4つのPythonで動かした
一時フォルダに Homebrew の Python 3.12 で .venv を作り、次のスクリプトを呼び分けました。
import sys
print(sys.executable)
print(sys.prefix)
print(sys.version.split()[0])
--- python3 (PATH)
/Users/me/opt/anaconda3/bin/python3
/Users/me/opt/anaconda3
3.9.7
--- .venv/bin/python
/private/tmp/itm70/sample/.venv/bin/python
/private/tmp/itm70/sample/.venv
3.12.13
--- /usr/bin/python3
/Applications/Xcode.app/Contents/Developer/usr/bin/python3
/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9
3.9.6
--- after activate
/private/tmp/itm70/sample/.venv/bin/python3
/private/tmp/itm70/sample/.venv
3.12.13
読み方のポイントです。
- 仮想環境を有効にしていないターミナルの
python3は、このMacではAnacondaでした。which -a python3の先頭が/Users/me/opt/anaconda3/bin/python3、2番目が/usr/bin/python3です。Homebrewにはpython3という名前が無く(python3.11とpython3.12だけ)、python3と打ってもHomebrewにはなりません。 /usr/bin/python3を動かすと、sys.executableは/Applications/Xcode.app/...を指しました。/usr/bin/python3は入口にすぎず、実体はXcode(このMacではxcode-select -pがXcodeを指している)の中にあります。VS Codeの一覧の表記とsys.executableの表示が違っても、同じPythonです。- 仮想環境を有効にした後は、
python3が.venvの中を指します。sys.prefixが.venvになっていれば仮想環境の中です。
VS Codeの実行ボタンとターミナルのどちらが上のどれに当たるかが分かれば、ずれの原因はほぼ決まります。
切り替える手順

⌘ + Shift + Pでコマンドパレットを開く- Python: Select Interpreter を選ぶ(ステータスバーのPython表示をクリックしても同じ一覧が出ます)
- 一覧から、右側のパスが目的のもの(例:
./.venv/bin/python)を選ぶ - ターミナルをゴミ箱アイコンで終了し、
⌃ + `で開き直す
公式ドキュメントでは、選んだ環境はコードの実行・デバッグ・補完に使われ、ターミナルを開いたときに自動で有効化されるとされています。自動有効化は新しく作ったターミナルが対象なので、開きっぱなしのターミナルは前の環境のままです。ここを飛ばすと「切り替えたのに変わらない」に見えます。
一覧に仮想環境が出てこない場合は仮想環境が自動認識されない理由と対処法を、ずれたまま入れてしまったライブラリの扱いはpip install が反映されないときの確認ポイントを参照してください。
プロジェクトごとに既定値を書いておく
.vscode/settings.json に python.defaultInterpreterPath を書くと、そのワークスペースで最初に使うPythonを指定できます。公式の設定リファレンスでは ${workspaceFolder} を使えると書かれているので、マシンごとのフルパスを書かずに済みます。
$ cat .vscode/settings.json
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python"
}
$ python3 -m json.tool .vscode/settings.json >/dev/null && echo "JSON OK"
JSON OK
ただし、これはまだ何も選んでいないときの既定値です。公式ドキュメントの優先順位は次のとおりで、python.defaultInterpreterPath は3番目です。
python-envs.pythonProjects(手動で環境を選ぶと、ここに書き込まれる)python-envs.defaultEnvManager(自分で設定した場合のみ)python.defaultInterpreterPath- 自動探索(ワークスペース内の
.venv、次にシステムのPython)
一度でも手で選んだことがあると、そちらが勝ちます。settings.json を書いても変わらないときは、もう一度 Python: Select Interpreter で選び直してください。この優先順位は、Python Environments拡張機能が入っている場合の説明です。このMacでは ms-python.vscode-python-envs 1.40.0 が入っていました。
なお、デバッグ(F5)も既定では選んだ環境を使います。デバッグだけ別のPythonにしたいときは launch.json の python で指定します。
ターミナル側がそもそも見つからない場合
ターミナルで python や python3 が command not found になる場合は、VS Codeではなくシェルの問題です。pythonコマンドが見つからない原因と対処法を参照してください。
参考にした公式ドキュメント
- Python environments in VS Code(Visual Studio Code):環境の選び方、選択の優先順位、ターミナルの自動有効化、デバッグ時の扱い
- Python settings reference(Visual Studio Code):
python.defaultInterpreterPathの意味と${workspaceFolder}
検証した環境
この記事の調査・再現・執筆は、運営者の指示のもとでAIエージェント(AnthropicのClaude)が行い、公開するかどうかは運営者が決めています。載せた出力は、そのAIエージェントがこのMacで実際にコマンドを実行して得たものです。
- macOS 26.6.2(Apple Silicon)、Xcode(
xcode-select -pがXcodeを指す) - VS Code 1.136.1、Python拡張機能 2026.10.0、Python Environments拡張機能 1.40.0
- Python:Anaconda 3.9.7(PATH先頭)、
/usr/bin/python33.9.6、Homebrew 3.11.14 / 3.12.13 - 確認は一時フォルダで実施(2026年10月19日)。画面写真は以前このMacで撮影したもの
コメントを残す