VS Code でWSL環境の仮想環境ゴーストが表示される問題の完全解決ガイド
問題の症状 😵💫
VS Code で WSL に接続し、新規でフォルダを作成した際に、仮想環境を作成していないにも関わらず、ターミナルのプロンプトに (.venv) が表示される現象が発生することがあります。
もちろん、実際には .venv ディレクトリは存在しません。deactivate コマンドを実行してもエラーメッセージが出るだけで、通常のように仮想環境から抜けることもできません。
いつ発生するのか? 🤔
この現象は特定の条件でのみ発生します:
発生する場合 ❌
- VS Code で問題のディレクトリを直接開くとき
- 以前同じ名前・同じ場所にディレクトリを作成し、そこで仮想環境を使用していた場合
- VS Code の内部ストレージにその設定が残っている場合
発生しない場合 ✅
- 違う名前のディレクトリを作成した場合
- VS Code で別のディレクトリを開いてから、
cdコマンドで問題のディレクトリに移動した場合 - Python: Clear Workspace Interpreter Setting コマンドを実行済みの場合
つまり、この現象は VS Code のワークスペース機能に起因する、かなり限定的な問題なのです。
なぜ発生するのか? 👻
この不思議な現象の原因は、VS Code のインタープリター設定の永続化メカニズムにあります。
新しい設定管理システム(2021年以降)
VS Code の Python 拡張機能は、2021年頃から設定管理方法を大きく変更しました:
- 旧方式(廃止済み):
python.pythonPath設定を.vscode/settings.jsonに保存 - 新方式(現在): VS Code の内部ストレージ(SQLiteデータベース)に保存
設定の保存場所
VS Code の内部ストレージに workspace settings が保存されるようになり、settings.json/.code-workspace ファイルには保存されなくなりました。具体的には:
- Windows:
%APPDATA%\Code\User\globalStorage\state.vscdb - macOS:
~/Library/Application Support/Code/User/globalStorage/state.vscdb - Linux:
~/.config/Code/User/globalStorage/state.vscdb
このSQLiteデータベース内で、ワークスペースのパスをキーとして Python インタープリターのパスが保存されています。
問題発生のメカニズム
- 初回、
/home/user/projectで.venv仮想環境を作成・使用 - VS Code が内部ストレージに記録:
WORKSPACE_FOLDER_INTERPRETER_PATH_/home/user/project→/home/user/project/.venv/bin/python - フォルダを削除
- 同じパスに同じ名前でフォルダを再作成
- VS Code が古い設定を検出し、存在しない
.venvを有効化しようとする - 結果:プロンプトに
(.venv)だけが表示される
解決方法 🛠️
方法1:一時的な解決(今すぐ表示を消したい場合)
ターミナルで以下のコマンドを実行してください:
exec $SHELLこれは現在のシェルを再起動するコマンドです。VS Code が適用した設定がリセットされ、(.venv) の表示は消えます。
注意: これは一時的な対処法です。VS Code を再起動したり、新しいターミナルを開いたりすると、再び (.venv) が表示されます。
方法2:ワークスペース設定のクリア(推奨) ⭐
Python: Clear Workspace Interpreter Setting コマンドを使用して、保存されている値をクリアできます。
- コマンドパレットを開く
Ctrl + Shift + P(Mac はCmd + Shift + P)を押します - 設定をクリア
Python: Clear Workspace Interpreter Settingと入力し、実行します - 新しいインタープリターを選択
Python: Select Interpreterコマンドを実行し、適切な Python インタープリターを選択します
方法3:キャッシュのリフレッシュ
インタープリターリストが古い情報を表示している場合:
Ctrl + Shift + Pでコマンドパレットを開くPython: Clear Cache and Reload Windowを実行- VS Code が再起動し、キャッシュがクリアされます
方法4:手動でのデータベース編集(上級者向け)
どうしても解決しない場合は、SQLiteデータベースを直接編集することも可能です:
- VS Code を完全に終了
- SQLiteブラウザーツール(DB Browser for SQLite など)をインストール
state.vscdbファイルを開くItemTableテーブルのms-python.pythonキーを探す- 該当するワークスペースパスのエントリを削除または修正
新しい設定方法(python.defaultInterpreterPath)
チームで作業する場合や、設定をバージョン管理したい場合は、python.defaultInterpreterPath 設定を使用できます:
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python"
}重要な注意点:
- この設定はプロジェクトを初めて開いた時のみ読み込まれます
- 一度インタープリターを選択した後は、この設定の変更は反映されません
- VS Code はこの設定を自動的に変更することはありません
WSL 特有の考慮事項
WSL環境で作業する場合の追加ポイント:
Remote-WSL 拡張機能の確認
- VS Code に Remote-WSL 拡張機能がインストールされているか確認
- 左下の緑色のボタンで WSL に接続されているか確認
- ターミナルが WSL のbash/zshになっているか確認
パスの違いに注意
- Windows側のパス:
C:\Users\username\project - WSL側のパス:
/home/username/project - マウントされたWindowsパス:
/mnt/c/Users/username/project
異なるパスは別のワークスペースとして扱われるため、設定も別々に保存されます。
予防方法 🛡️
同じ問題を避けるためには:
- プロジェクトごとに異なる名前を使用する
- 仮想環境を削除する前に、
Python: Clear Workspace Interpreter Settingを実行 .gitignoreに.vscode/を追加して、ローカル設定の競合を避ける- チーム開発では
python.defaultInterpreterPathを使用して標準化
トラブルシューティング 🔍
問題が解決しない場合のチェックリスト
- VS Code を完全に終了しているか?
- すべてのウィンドウを閉じる
- タスクマネージャーで Code.exe プロセスが残っていないか確認
- 正しいワークスペースで作業しているか?
- マルチルートワークスペースの場合、各フォルダに個別の設定がある
- Python 拡張機能は最新か?
- 拡張機能の更新を確認
- 必要に応じて再インストール
- WSL の統合は正常か?
wsl --statusでWSLの状態を確認- Remote-WSL 拡張機能の再インストール
まとめ
VS Code の便利なワークスペース機能が、時として混乱を引き起こすことがあります。この問題は、VS Code が2021年以降採用している新しい設定管理システムに起因しており、内部ストレージにインタープリター設定が永続化されることで発生します。
主な解決策は:
- 即座の対処:
exec $SHELLでシェルをリセット - 根本解決:
Python: Clear Workspace Interpreter Settingで設定をクリア - 予防策: プロジェクトごとに異なる名前を使用、または設定を事前にクリア
もしターミナルで不可解な表示が出た際は、「VS Code の内部ストレージに古い設定が残っているかも?」と考えてみると、解決の糸口が見つかるでしょう。
最終更新: 2025年9月2日
VS Code バージョン: 1.90以降対応
Python 拡張機能: 2023.14.0以降対応


