【解決済み】VSCodeで削除した(.venv)が表示される問題と完全対処法

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年頃から設定管理方法を大きく変更しました:

  1. 旧方式(廃止済み): python.pythonPath 設定を .vscode/settings.json に保存
  2. 新方式(現在): 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 インタープリターのパスが保存されています。

問題発生のメカニズム

  1. 初回、/home/user/project.venv 仮想環境を作成・使用
  2. VS Code が内部ストレージに記録:WORKSPACE_FOLDER_INTERPRETER_PATH_/home/user/project/home/user/project/.venv/bin/python
  3. フォルダを削除
  4. 同じパスに同じ名前でフォルダを再作成
  5. VS Code が古い設定を検出し、存在しない .venv を有効化しようとする
  6. 結果:プロンプトに (.venv) だけが表示される

解決方法 🛠️

方法1:一時的な解決(今すぐ表示を消したい場合)

ターミナルで以下のコマンドを実行してください:

exec $SHELL

これは現在のシェルを再起動するコマンドです。VS Code が適用した設定がリセットされ、(.venv) の表示は消えます。

注意: これは一時的な対処法です。VS Code を再起動したり、新しいターミナルを開いたりすると、再び (.venv) が表示されます。

方法2:ワークスペース設定のクリア(推奨) ⭐

Python: Clear Workspace Interpreter Setting コマンドを使用して、保存されている値をクリアできます。

  1. コマンドパレットを開く
    Ctrl + Shift + P(Mac は Cmd + Shift + P)を押します
  2. 設定をクリア
    Python: Clear Workspace Interpreter Setting と入力し、実行します
  3. 新しいインタープリターを選択
    Python: Select Interpreter コマンドを実行し、適切な Python インタープリターを選択します

方法3:キャッシュのリフレッシュ

インタープリターリストが古い情報を表示している場合:

  1. Ctrl + Shift + P でコマンドパレットを開く
  2. Python: Clear Cache and Reload Window を実行
  3. VS Code が再起動し、キャッシュがクリアされます

方法4:手動でのデータベース編集(上級者向け)

どうしても解決しない場合は、SQLiteデータベースを直接編集することも可能です:

  1. VS Code を完全に終了
  2. SQLiteブラウザーツール(DB Browser for SQLite など)をインストール
  3. state.vscdb ファイルを開く
  4. ItemTable テーブルの ms-python.python キーを探す
  5. 該当するワークスペースパスのエントリを削除または修正

新しい設定方法(python.defaultInterpreterPath)

チームで作業する場合や、設定をバージョン管理したい場合は、python.defaultInterpreterPath 設定を使用できます:

{
  "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python"
}

重要な注意点:

  • この設定はプロジェクトを初めて開いた時のみ読み込まれます
  • 一度インタープリターを選択した後は、この設定の変更は反映されません
  • VS Code はこの設定を自動的に変更することはありません

WSL 特有の考慮事項

WSL環境で作業する場合の追加ポイント:

Remote-WSL 拡張機能の確認

  1. VS Code に Remote-WSL 拡張機能がインストールされているか確認
  2. 左下の緑色のボタンで WSL に接続されているか確認
  3. ターミナルが WSL のbash/zshになっているか確認

パスの違いに注意

  • Windows側のパス: C:\Users\username\project
  • WSL側のパス: /home/username/project
  • マウントされたWindowsパス: /mnt/c/Users/username/project

異なるパスは別のワークスペースとして扱われるため、設定も別々に保存されます。

予防方法 🛡️

同じ問題を避けるためには:

  1. プロジェクトごとに異なる名前を使用する
  2. 仮想環境を削除する前にPython: Clear Workspace Interpreter Setting を実行
  3. .gitignore.vscode/ を追加して、ローカル設定の競合を避ける
  4. チーム開発では python.defaultInterpreterPath を使用して標準化

トラブルシューティング 🔍

問題が解決しない場合のチェックリスト

  1. VS Code を完全に終了しているか?
    • すべてのウィンドウを閉じる
    • タスクマネージャーで Code.exe プロセスが残っていないか確認
  2. 正しいワークスペースで作業しているか?
    • マルチルートワークスペースの場合、各フォルダに個別の設定がある
  3. Python 拡張機能は最新か?
    • 拡張機能の更新を確認
    • 必要に応じて再インストール
  4. 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以降対応

タイトルとURLをコピーしました