Vim/NeovimでPythonの実行パスを設定・確認する方法
Python製の補完・LSPクライアントプラグインを導入すると、たいてい「Python providerが見つかりません」といった警告に出会います。プラグインを個別に疑う前に、まずPython連携そのものが有効になっているかを確認・設定しておくと解決が早くなります。
目次(6項目)
Pythonのパスを指定する
Vim・Neovimいずれでも、設定方法は共通で次のオプションを使います。
let g:python3_host_prog = '{Python3実行ファイルのパス}'
これを設定ファイル(.vimrc / init.vim / init.lua)に記載します。
" Linux/Mac
let g:python3_host_prog = '/usr/bin/python3'
" Windows
let g:python3_host_prog = 'C:\Python312\python.exe'
Python2向けのg:python_host_progという設定も存在しますが、Python 2自体がすでにサポート終了しているため、新規に設定する意味はほぼありません。古い記事でこの設定を見かけても、今から導入する必要はありません。
設定値を確認する
:echo g:python3_host_prog
指定したパスがそのまま表示されればOKです。ただし、このコマンドはあくまで「設定した値」を表示するだけで、そのパスが実際に有効かまでは保証しません。
Pythonが有効になっているか確認する
設定したパスが実際に認識されているかは、次のいずれかの方法で確認できます。
| 方法 | 実行 | 分かること |
|---|---|---|
| has()関数 | :echo has('python3') | 1なら有効、0なら無効 |
| 実行して確認 | :py3 print('OK') | エラーなくOKが出れば有効 |
| Neovimのみ | :checkhealth provider | 実際に使われているパスとバージョンまで明示 |
Neovimなら:checkhealthが最も確実
Neovimには:checkhealthコマンドがあり、Python連携の状態もここでまとめて確認できます。複数バージョンのPythonをインストールしている環境だとhas('python3')だけでは判断しづらいことがありますが、checkhealthなら実際に使われているパスとバージョンが明示されるので確実です。困ったら、まずこちらを実行するのが確実です。
g:python3_host_progでパスを明示し、Neovimなら:checkhealth providerで最終確認するのが最も迷いにくくなります。
Python連携を無効化したい場合
そもそもPython連携するプラグインを使っておらず、checkhealthの警告が煩わしいだけという場合は、次の設定で無効化できます。
let g:loaded_python3_provider = 0
無効化しておけば、起動時のプロバイダ探索処理自体が省略されるため、わずかながら起動も速くなります。
仮想環境を切り替えるたびにPython連携が壊れて困っていましたが、pyenvなどでバージョンを切り替えず、専用のPython実行ファイルを1つ用意してg:python3_host_progで固定するようにしたら安定しました。仮想環境と紐付けようとすると環境を切り替えるたびに設定し直す羽目になるので、Neovim用は専用に分けておくのがおすすめです。
まとめ
Python連携で困ったら、g:python3_host_progでパスを明示し、has('python3')または:checkhealth providerで状態を確認します。この2段階を押さえておけば、大半のPython連携トラブルは切り分けられます。