0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCode で Language Server (Pylance) が動かなくなって悩んだ

Last updated at Posted at 2025-02-09

現象

Visual Studio Code で Python の Language Server である Pylance が起動しなくなってしまい、数日悩みました。

OUTPUT のプルダウンには Python Language Server が表示されなくなっていました。

OUTPUT の Extension Host には Error: Channel has been closed といったエラーが出ていました。

解消手順

  1. ~/.vscode/argv.jsonms-python.python=debug のようなログレベルの設定があるのを確認。他には大した設定が書かれていないのを確認
  2. ~/.vscode/argv.json を削除
  3. ⌘+Shift+P>Python Clear Cache and Reload Window を実行

で動くようになりました。

再現手順

問題は手元の Mac で起きていて、Windows では再現しませんでした。
macOS のバージョンは Ventura 13.7.2Sequoia 15.3 です。途中でバージョンを上げました。1台の Mac です。

OUTPUT から Python を選び、歯車アイコン :gear: でログレベルを Warning に変更 (どれでもいいようです)、Set As Default で保存すると ~/.vscode/argv.json に以下のように保存されます。

  "log-level": [
    "ms-python.python=warn"
  ]

この状態で >Python Clear Cache and Reload Window を実行すると Pylance が起動しなくなります。

JSON を編集して設定を消しても直りませんでした。

解消までに試したこと

プロファイル

新しいプロファイルを使い、最小限の機能拡張だけいれて試しても直りませんでした。

Trust Mode

⌘+Shift+P>Workspaces: Manage Workspace Trust を実行、ワークスペースを Restricted Mode (信用しない) に切り替えると、問題なく起動することがわかりました。

シェルの設定を変えてみる

.zshrc.zprofile など、全てのシェル関係のファイル名を変え、シェルの影響を受けないようにしても直りませんでした。

シェルの設定を変える時は、HISTSIZE が小さくなって、コマンド履歴が消えないように要注意です。

Python ランタイムの変更を検討

Python のバージョンを管理している misehomebrew の影響を受けているのではと疑いましたが、mise はともかく homebrewpython は依存が多くて気軽には消せませんでした。

OS のバージョンを上げる

OS を Ventura 13.7.2 から Sequoia 15.3 にアップデートしても直りませんでした。

デバッガでコードを見てみる

Help > Toggle Developer Tools のコンソールから、エラー行を開いてブレイクポイントを設定し、ソースを見たりしたのですが、わからず。

:star2: ポータブルモードを試す

ポータブルモードに切り替えた所、問題なく動くようになったので、やはり設定が悪いのだろうと当たりを付けました。

Mac だと Visual Studio Code.app を空のフォルダにコピーして、同じ階層に code-portable-data フォルダを作るだけでした。

設定ファイルを一新する

まっさらな環境になるよう、~/.vscode/~/Library/Application\ Support/Code の両方をリネームして再起動、>Python Clear Cache and Reload Window を実行したら動くようになりました。

過去の設定を捨てて一からやり直しても良かったのですが、~/.vscode/ を見ていたところ、argv.json が怪しそうだったので、これを消して起動し直したら動くようになりました。

どうしたらもっと早く解決できたか

普段使う道具の、設定がどこに保存されていて、どういう役割なのかくらいは把握しておかないと、いざという時に苦労するなと思いました。

~/.vscode/~/Library/Application\ Support/Code がどういう使い分けなのかは、調べてもよくわかりませんでしたが……。

~/.vscode/ には、機能拡張が保存されています。また、起動オプションに関わる argv.json が保存されています。起動時に必要な設定、クラッシュレポーターやログレベルがここに保存されるようです。 ~/.vscode-cli/ にもコマンドラインの設定らしきファイルがありますが、よくわかりません。

~/Library/Application\ Support/Code/User/ にはユーザレベルの設定 settings.json が保存されています。

OUTPUT で見られるログは、~/Library/Application\ Support/Code/logs/{起動時刻}/window{番号} 以下にありました。

ポータブルモードを使うと、設定の一切合切を1つのディレクトリにまとめられます。普段からこちらを使う方が明快なのでは、という気もしました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?