brewで入れてるVim8をアップデートしたらdeopleteが動作しなくなったのに対処したメモ。
エラー文にinitializeとあるので、なにやら初期化時にエラーが起きている。
[deoplete] [vim-hug-neovim-rpc] requires one of `:pythonx import [pynvim|neovim]`
command to workfunction deoplete#enable[9]..deoplete#initialize[1]..
deopleteのrequirementでも変わったかね?と確認すると msgpack
をpipでいれろとある。
入れた記憶がなかったのでインストール。まあ入っていたのだけど。
$ pip3 install -U msgpack
$ pip3 install -U pynvim
が、まだエラーが出る。
Vim側で:echo if("python3")
で1になるのでVim側のifは有効。:pyx print(sys.version)
すると
3.8.3 (default, May 27 2020, 20:54:22)
[Clang 11.0.3 (clang-1103.0.32.59)]
3.8・・・? $ python3 -V
をすると3.7が出てくる。これは/usr/bin/にあるmacOS Catalinaのものだ。どうやらbrewのvimのpython dependencyが python@3.8
になったようだ。
brewで入ったpython 3.8用の/usr/local/bin/pip3.8があるので、そちらでmsgpackとpynvimを入れる。
$ pip3.8 install -U msgpack
$ pip3.8 install -U pynvim
まだエラーが出る。
[deoplete] [yarp] [deoplete] job is dead. failed establishing channel for ['python3', '-u', ...
これは python3
コマンドを使っているっぽい。でもそっちは3.7なんだよなってことで3.8の方を使われるようにしたい。いっそbrewのpython3パッケージを消そうかと思ったが依存で使われていて消せない。
python3コマンドを3.8の方が使われるようにPATH通すかってことでbrewのlinkを通す事にする。
brewの python@3.8
はkeg-onlyなので自動では/usr/local/bin/にsymlinkが作られない。のでリンクを作る。
$ brew link python@3.8 --force
Linking /usr/local/Cellar/python@3.8/3.8.3...
Error:Could not symlink bin/pip3
Target /usr/local/bin/pip3
is a symlink belonging to python. You can unlink it:
brew unlink python
To force the link and overwrite all conflicting files:
brew link --overwrite python@3.8
To list all files that would be deleted:
brew link --overwrite --dry-run python@3.8
brewのpython3で入ったpip3がいるのでエラー。pip3も3.8の方で良い(今後何か起きるかもだが)のでoverwriteつけて...
$ brew link python@3.8 --force --overwrite
成功。
/usr/binよりも/usr/local/binの方を優先するPATHにしてるので、これでpython3が3.8に向いて無事deopleteが動いた。
なおったはなおったが、そろそろnvimにした方がトラブル少ないのかもしれないなーと思った。