Pythonの開発環境を整える(Neovim + Pyenv + Pipenv)

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から使える状態になっていると以下のように表示される。

f:id:watanany:20171209014022p:plain

無事、has("python3")が成功しておりNeovimからPython3を使えるようになっているようだ。

下の方に目を通すと、pyenvが最適にセットされていないと出てくる。

f:id:watanany:20171209014039p:plain

Neovim用にvirtualenvを使って仮想環境を作れということらしい。

ただ、それをしてしまうと補完してほしいモジュールをNeovim用の仮想環境と開発用の仮想環境、どちらにも入れなければならなさそうなので、pipenvでneovimパッケージをインストールすることにした。

これのデメリットはpipenvで仮想環境を作るごとにneovimパッケージをインストールしなければいけないことだが、今回はそれで良しとした。