前提
これまでvscodeを使っていましたが、neovimを使おうと思い設定をしているのですが、pyenvのvirtualenvを用いた設定が上手くできません。つまり、編集しているフォルダのvirtualenvで指定されているpythonに応じて、pythonのファイルの補完が変わってほしいです。例えば、numpyをインストールしている仮想環境では、import numpy as npにneovim上で警告が表示されず、numpyをインストールしていない仮想環境では、neovim上で警告が表示されてほしいです。
行ったこと
:help provider-python
をしてみると、
PYTHON VIRTUALENVS python-virtualenv If you plan to use per-project virtualenvs often, you should assign one virtualenv for Neovim and hard-code the interpreter path via g:python3_host_prog so that the "pynvim" package is not required for each virtualenv. Example using pyenv: pyenv install 3.4.4 pyenv virtualenv 3.4.4 py3nvim pyenv activate py3nvim python3 -m pip install pynvim pyenv which python # Note the path The last command reports the interpreter path, add it to your init.vim: let g:python3_host_prog = '/path/to/py3nvim/bin/python'
とりあえず、neovimのPluginなどで使う用に、neovimだけで使うvirtualenvを用意すれば良いということのようなので、バージョンだけ自分の環境に合わせて言われた通りに行いました。
pyenv virtualenv 3.8.13 neovim3 pyenv activate neovim3 python3 -m pip install pynvim pyenv which python # Note the path
最後のpyenv which pythonで出てきたパスを用いて、
let g:python3_host_prog = '/path/to/py3nvim/bin/python'
と設定しました。
そして:checkhealthをすると、
## Python 3 provider (optional) - INFO: pyenv: Path: /opt/homebrew/Cellar/pyenv/2.3.1/libexec/pyenv - INFO: pyenv: Root: /opt/homebrew/var/pyenv - INFO: Using: g:python3_host_prog = "/opt/homebrew/var/pyenv/versions/neovim3/bin/python" - INFO: Executable: /opt/homebrew/var/pyenv/versions/neovim3/bin/python - INFO: Python version: 3.8.13 - INFO: pynvim version: 0.4.3 - OK: Latest pynvim is installed.
と、ここまでは問題ありません。
また、virtualenvを設定していないフォルダ(.python-versionが今の階層よりも上にないフォルダ)では、上の出力に続いて、
## Python virtualenv - OK: no $VIRTUAL_ENV
となり、見た目通り何も問題がないのですが、実際の開発で用いるように、virtualenvを設定しているフォルダにおいては、
## Python virtualenv - WARNING: $VIRTUAL_ENV is set to: /opt/homebrew/var/pyenv/versions/3.10.3/envs/{VIRTUALENV_NAME} And its /bin directory contains: python, python3, python3.10 But $PATH yields this python executable: /opt/homebrew/var/pyenv/versions/{VIRTUALENV_NAME}/bin/python And $PATH in subshells yields this python executable: /opt/homebrew/var/pyenv/versions/{VIRTUALENV_NAME}/bin/python And $PATH yields this python3 executable: /opt/homebrew/var/pyenv/versions/{VIRTUALENV_NAME}/bin/python3 And $PATH in subshells yields this python3 executable: /opt/homebrew/var/pyenv/versions/{VIRTUALENV_NAME}/bin/python3 And $PATH yields this python3.10 executable: /opt/homebrew/var/pyenv/versions/{VIRTUALENV_NAME}/bin/python3.10 And $PATH in subshells yields this python3.10 executable: /opt/homebrew/var/pyenv/versions/{VIRTUALENV_NAME}/bin/python3.10 So invoking Python may lead to unexpected results. - ADVICE: ▏ - $PATH ambiguities arise if the virtualenv is not properly activated prior to launching Nvim. Close Nvim, activate the virtualenv, check that invoking Python from the command line launches the correct one, then relaunch Nvim. ▏ - $PATH ambiguities in subshells typically are caused by your shell config overriding the $PATH previously set by the virtualenv. Either prevent them from doing so, or use this workaround: https://vi.stackexchange.com/ a/34996
というような警告が表示されます。
警告で、So invoking Python may lead to unexpected results. とあるように、このままだと、virtualenvで指定しているpythonのバージョンで補完が効きません。
つまり、例えば、virtualenvで指定しているpythonでは、numpyが入っているとして、次の.pyファイルをnvimで作ると、
import numpy as np
import numpy as np ●● "np" is not accessed
というようにneovimの機能で警告が表示されてしまいます。
実現したいこと
先程の、Python virtualenv におけるWARNINGを解決したいです。
補足情報(FW/ツールのバージョンなど)
環境は、
M1
Mac OS Monterey: 12.4
NEOVIM_VERSION=0.7.0
NVM_VERSION=0.39.1
NODE_VERSION=18.0.0
また、Ubuntu20.04でも試しましたが、全く同様の問題が生じました。
init.vimなどはhttps://github.com/Optixal/neovim-init.vimをそのまま導入しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。