Windows 10 で Neovim に Python3 を認識させる

Neovim ダウンロード

GitHub Releases から最新(NVIM v0.2.3-dev)ダウンロード、展開。 nvim-win64/Neovim/bin/nvim-qt.exe が本体です。

Python3インストール

公式からインストーラを落としてインストール。

cmd で確認

> python -V
Python 3.6.4

pipの neovim パッケージをインストール

> pip3 install neovim

Neovim から Python を確認

Neovimを起動し、:echo has('python3')1 が返ってきたのでOK。

次に :checkhealth と叩くと、Python 3 provider (optional)の項でエラーが出ています。

## Python 3 provider (optional)
...
  - ERROR: Command error (job=5): "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\python" "-c" "import neovim; print(neovim.__file__)"
    Output: Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\lib\site-packages\neovim\__init__.py", line 9, in <module>
    from .api import Nvim
  File "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\lib\site-packages\neovim\api\__init__.py", line 7, in <module>
    from .buffer import Buffer
  File "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\lib\site-packages\neovim\api\buffer.py", line 2, in <module>
    from .common import Remote
  File "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\lib\site-packages\neovim\api\common.py", line 4, in <module>
    from msgpack import unpackb
ModuleNotFoundError: No module named 'msgpack'

  - INFO: Python3 version: 3.6.4

  - INFO: python-neovim version: unable to load neovim Python module
  - ERROR: Neovim Python client is not installed.
    Error: unable to load neovim Python module
    - ADVICE:
      - Run in shell: pip3 install neovim

さっき neovim パッケージをインストールしたのに、「neovim をインストールしろ」と言われています。 それとは別に、エラーメッセージをよく見ると、「No module named 'msgpack'」と書いてあるので、インストールしてみます。

> pip3 install msgpack
Requirement already satisfied: msgpack in c:\users\s4kr4\appdata\local\programs\python\python36-32\lib\site-packages

すでに入ってる?

試しにcmdからPythonインタプリタを起動し、importしてみます。

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import neovim
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\lib\site-packages\neovim\__init__.py", line 9, in <module>
    from .api import Nvim
  File "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\lib\site-packages\neovim\api\__init__.py", line 7, in <module>
    from .buffer import Buffer
  File "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\lib\site-packages\neovim\api\buffer.py", line 2, in <module>
    from .common import Remote
  File "C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\lib\site-packages\neovim\api\common.py", line 4, in <module>
    from msgpack import unpackb
ModuleNotFoundError: No module named 'msgpack'

Neovimから言われてるのと同じことですね。

その後色々と検索していると、以下のIssueが見つかりました。

github.com

msgpackの代わりにmsgpack-pythonで試してみろとのこと。

とりあえずやってみます。 念のため、一旦neovimパッケージはアンインストールします。

> pip3 uninstall neovim
> pip3 uninstall msgpack
> pip3 install msgpack-python
> pip3 install neovim

Neovimを再起動し、もう一度 :checkhealth すると、

## Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "C:\Users\s4kr4\AppData\LocalPrograms/Python/Python36-32/python.exe"
  - INFO: Multiple python.exe executables found.  Set `g:python3_host_prog` to avoid surprises.
  - INFO: Executable: C:\Users\s4kr4\AppData\Local\Programs\Python\Python36-32\python.exe
  - INFO: Other python executable: /python.exe
  - INFO: Python3 version: 3.6.4

  - INFO: python.exe-neovim version: 0.2.4

  - OK: Latest python.exe-neovim is installed: 0.2.4

通りました。