Как установить интерпретатор 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]

и это работает для меня.

Другие вопросы по тегам