Title - Wake Up! Good Night*

Neovimでvirtualenvを使うときのpython_host_progの設定

Posted on July 3, 2017

neovimでpythonのvirtualenvを使うときのpython_host_progの設定についてです。

neovimで補完などを有効化する場合、pythonのneovimパッケージをインストールしていると思いますが、デフォルトでvirtualenvを作ると、そのneovimパッケージが入っていません。

そこで、neovimパッケージをvirtualenvにインストールして、python_host_progにvirtualenvのpythonを指定するのが一般的かと思います。参考

しかし、この方法だと、pythonの仮想環境を作る度に、neovimパッケージをインストールする手間が発生してしまいます。

そこで、virtualenvを作成したときのデフォルトのパッケージにneovimなどを追加するようにし、python_host_progには、現在のvirtualenvのpythonが指定されるようにしたいと思います。

virtualenv作成時のデフォルトのパッケージ追加

まず、追加したいパッケージをあるディレクトリにインストールします。この時、python2用とpython3用の両方を準備しておくのが良いと思います。

次に、virtualenv作成時に、これらのパッケージも参照するように設定します。以下のように ~/.virtualenv/postmkvirtualenv を編集します。

これでvirtualenv作成時に、上記でインストールしたパッケージも読み込まれます。

neovimのpython_host_progの設定

続いて、neovimで、virtualenvが有効な場合は、virtualenvのpythonを参照するように指定します。

let g:python_host_prog = '/usr/bin/python2'
let g:python3_host_prog = '/usr/bin/python3'

if exists("$VIRTUAL_ENV")
  if !empty(glob("$VIRTUAL_ENV/bin/python3"))
    let g:python3_host_prog = substitute(system("which python"), '\n', '', 'g')
  else
    let g:python_host_prog = substitute(system("which python"), '\n', '', 'g')
  endif
endif

参照

submit to reddit このエントリーをはてなブックマークに追加