Help us understand the problem. What is going on with this article?

brewで入れたVim8のDependenciesがpython@3.8になってdeopleteが動かなくなったのに対処したメモ

2020/10/21現在
brewで入るvimはpython@3.9になっている。
3.8を3.9に読み替えればOK。


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にした方がトラブル少ないのかもしれないなーと思った。


追記
同じ内容で同じ対応をしてるissueがあった。
https://github.com/roxma/vim-hug-neovim-rpc/issues/47#issuecomment-622954462

r_plus
iOS dev.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away