Как установить интерпретатор Python в neovim для языкового сервера Python в зависимости от pyenv / virtualenv
Я использую pyright LSP в neovim (0.5). Он работает, но, похоже, работает только с пакетами, доступными в стандартной установке python. Он не выполняет автозаполнение для пакетов не в базовом питоне, а в моей среде pyenv. В VSCode это довольно легко сделать, выбрав интерпретатор.
Как я могу настроить виртуальную среду или версию pyenv для использования Pyright LSP в Neovim?
3 ответа
На самом деле это не ответ, есть эта проблема в nvim-lsp, где они исследуют некоторые альтернативы, оказывается, что nvim (или pyright, я точно не знаю) не уважает / не загружает локальный файл .python-version pyenv. Альтернатива - использовать обычный венв. С помощью
pyenv shell myvenv
перед запуском nvim также работает, но это противоречит удобству файла .python-version. Возможно, есть способ загрузить правильный venv с некоторыми скриптами в bashrc / zshrc / config.fish, но, опять же, это не так удобно, ИМХО.
https://github.com/neovim/nvim-lspconfig/issues/717
РЕДАКТИРОВАТЬ: нашел хорошее решение
Есть простой способ получить работу pyright с pyenv virtualenvs:
Создавать
pyrightconfig.json
файл в корневом каталоге вашего проекта и вставьте следующее, заменив USERNAME и MY-VENV своим пользователем и venv, предположим, что ваш pyenv установлен в
~/.pyenv
. Он добавляет еще один файл за
.python-version
, но это просто и не стоит связываться с конфигурациями оболочки.
{
"venvPath": "/home/USERNAME/.pyenv/versions/",
"venv": "MY-VENV"
}
Вы можете проверить полный документ здесь: https://github.com/microsoft/pyright/blob/master/docs/configuration.md
РЕДАКТИРОВАТЬ 2: Проверить этот плагин pyenv-pyright, который я создал. С его помощью вы можете настроить pyright для использования pyenv venvs с помощью только одной команды:
pyenv local my-venv
pyenv pyright
или же
pyenv pyright my-venv
Это автоматически создаст / обновит
.pyrightconfig.json
файл с pyenv virtualenv по вашему выбору. Это удобный способ преодолеть настройку neovim + pyright + pyenv virtualenvs. https://github.com/alefpereira/pyenv-pyright
TLDR;
echo '{ "venvPath": ".", "venv": ".venv" }' >> pyrightconfig.json
Работает по умолчаниюpyenv
иpoetry
настраивать.
Мне не удалось заставить работать другие варианты, поэтому я использую
pyenv shell [virtual_env_name]
и это работает для меня.