ShougoさんのNeovim補完用プラグインDeopleteはneovimがpython3を使える状態にしなければいけない。
今まで、面倒臭くてWarningやErrorを無視していたが、最近Pythonに触れる機会が多くなって来たのでこれを機にちゃんと補完が効くようにする。
Neovimのインストール
$ brew install neovim
Pyenv + Pipenvのインストール
$ brew install pyenv pipenv
あとは、.zshrcに以下を書き込んでexec $SHELL -l
すれば設定が完了した。
export PYENV_ROOT=$HOME/.pyenv export PATH=$PYENV_ROOT/bin:$PATH eval "$(pyenv init -)" alias pyenv="CFLAGS='-I$(brew --prefix openssl)/include' LDFLAGS='-L$(brew --prefix openssl)/lib' pyenv"
Pipenvを使う
$ pyenv install 3.6.3 $ pipenv --python 3.6.3
あとは、pipenvがvirtualenvを作ってくれるので必要なモジュールをインストールすれば開発環境を構築できた。
$ pipenv install -d neovim ipython # -d, --dev で開発環境用にインストールできる $ pipenv install numpy
pipenvはvirtualenvの環境変数などを反映した状態にするためのコマンドがある。
$ pipenv shell
これを叩くと、環境を反映した子プロセスのシェルが立ち上がる。
これをやらないと毎回、pipenv run ipython
とか pipenv run python hoge.py
と、pipenv run ...
と先頭につける必要がありそう。
Ruby Bundlerのbundle exec ...
みたいな感じかな?
子プロセスを起動した状態で、Neovimを起動するとdeopleteが使える状態になっている。
Neovimの状態チェック
Neovimで以下のコマンドを実行すれば、Neovimの状態とアドバイスが得られる。
:CheckHealth
きちんとpython3がNeovimから使える状態になっていると以下のように表示される。
無事、has("python3")が成功しておりNeovimからPython3を使えるようになっているようだ。
下の方に目を通すと、pyenvが最適にセットされていないと出てくる。
Neovim用にvirtualenvを使って仮想環境を作れということらしい。
ただ、それをしてしまうと補完してほしいモジュールをNeovim用の仮想環境と開発用の仮想環境、どちらにも入れなければならなさそうなので、pipenvでneovimパッケージをインストールすることにした。
これのデメリットはpipenvで仮想環境を作るごとにneovimパッケージをインストールしなければいけないことだが、今回はそれで良しとした。