【VSCode】IntelliCodeがアクティブにならないと思ったら仮想環境の参照先が違った


発生した問題

VSCode起動時に以下のようなエラーメッセージが出てきました。

申し訳ございません。Python の IntelliCode サポートのアクティブ化で問題が発生しました。
詳細については、"Python の言語サポート" および "VS IntelliCode" の出力ウィンドウをご確認ください。

Visual Studio IntelliCodeはすごく賢い補完機能です。
これの有無でコーディングの効率がかなり変わってくるので、アクティブになってくれないと非常に困ります。

結論

原因
プロジェクトフォルダの名前を一度変更したためだと思われる。(未確定)

対処
フォルダごと移動、仮想環境を作り直す。

環境

  • Windows10
  • エディタ : VSCode
  • Pythonのバージョン : 3.10.2
  • 環境管理 : pipenv, pyenv

やったこと

再起動

とりあえずVSCode、PCを再起動してみました。
変化なしです。

出力を見てみる

エラーメッセージで言われたとおり出力ウィンドウを見てみます。

出力ウィンドウは表示 > 出力 で表示できます。

VS IntelliCode
Language server is set to "Default". Pylance is used as current language server.
Acquiring model
Acquiring model 'intellisense-members-lstm-pylance' for python
Querying IntelliCode service for available models.
vs-intellicode-python was passed a model: {}.
Cached model is up to date.
Activating Python extension
Error while activating Python: {"errno":-4058,"code":"ENOENT","syscall":"scandir","path":"C:\\Users\\user_name\\.virtualenvs\\virtualenv_name\\Scripts"}
Python
# 関係のありそうな箇所
[ERROR 2022-2-14 14:32:9.496]: Python Extension: interpreterManager.refresh [Error: ENOENT: no such file or directory, scandir 'C:\Users\user_name\.virtualenvs\virtualenv_name\Scripts'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'scandir',
  path: 'C:\\Users\\user_name\\.virtualenvs\\virtualenv_name\\Scripts'
}

pathにpipenvで管理している仮想環境が参照されているようです。
(virtualenv_nameとなっている箇所)

なぜか参照先が現在の仮想環境とは異なっていました。

おそらく一度フォルダ名を変更したためだと思われます。

対処

仮想環境を作り直しても path が変更されず、変更方法もわかりません。

かなり強引ですが、手っ取り早くフォルダごと移動しました。

pipenvで環境の管理をしている場合、 Pipfile.lockPipfile を参照してパッケージをインストール、仮想環境を作成することが出来るので仮想環境のリセット自体は非常に楽です。

# pipfileを参照してインストール
pipenv install

# pipfile.lockを参照してインストール
pipenv sync

無事アクティブ化出来ました。

反省

  • 管理しにくいのでプロジェクトフォルダ直下に仮想環境用のフォルダが作成されるように変更する。
  • プロジェクトフォルダの名前を安直に変更しない。
    • 問題起きるだろうなーと思いつつプロジェクトフォルダ名を変更したのがそこそこ前だったので、今更影響が出るとは思いませんでした。