«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Emacs для Python и Poetry с использованием `basedpyright-langserver`

Emacs для Python и Poetry с использованием `basedpyright-langserver`

Опубликовано 5 ноября 2024 г.
Просматривать:317

Emacs for Python and Poetry Using `basedpyright-langserver`

Я очень доволен своей текущей настройкой emacs для Python, но настройка показалась мне немного сложной. Я задокументирую здесь свою настройку для себя в будущем и для всех других питонистов, которым нужна надежная конфигурация emacs.

Почему основано авторское право?

До этого момента я использовал mypy --strict в командной строке для всех своих нужд по проверке типов, но mypy работает довольно медленно даже для очень маленьких кодовых баз, и даже в режиме --strict он не так хорош. насколько это возможно строго. Это также не языковой сервер, который мне нужен для установки emacs.

basedpyright — это форк Pyright с некоторыми отличными улучшениями как в проверке, так и в надежности. Это быстрая и удивительно строгая проверка типов с некоторыми хорошими возможностями проверки типов.

Единственные недостатки, с которыми я столкнулся, заключаются в том, что он не так хорошо работает, как mypy, с клиентами boto3-stubs для AWS, и что он использует нестандартный # пирайт: игнорировать комментарии вместо стандартного # типа: игнорировать комментарии, но Я могу смириться с этими проблемами, предпочитая строго строгую проверку типов.

Настройка ваших проектов Poetry для работы с Basedpyright или Pyright.

Если у вас уже есть проекты, использующие Poetry, вам захочется немного повозиться с вашей виртуальной средой.

Перейдите в корень каждого из ваших проектов и выполните следующую команду:


poetry config --local virtualenvs.in-project true


При этом будет создан файл poetry.toml, если он еще не существует, и добавлен соответствующий параметр.

Однако это не фактически изменит существующую виртуальную среду. Чтобы это изменение вступило в силу, вам необходимо удалить существующую виртуальную среду, которую вы можете найти, запустив


poetry env info --path


Не забудьте добавить путь .venv к вашему .gitignore и конфигурации для любых других инструментов, которые вы можете использовать, например pycodestyle, иначе у вас получится полный беспорядок.

Далее вам следует добавить раздел конфигурации в ваш pyproject.toml, чтобы указать Basedpyright, где искать вашу виртуальную среду.


[tool.pyright]
venv=".venv"
venvPath="."


Вы также можете сделать это в файле pyrightconfig.json, если, в отличие от меня, вы еще не чувствуете себя полностью перегруженными файлами конфигурации для различных инструментов разработки Python.

Установка BasedPyright в качестве языкового сервера

Одна из очень приятных особенностей Basedpyright по сравнению с Pyright заключается в том, что он строит зависимость nodejs в виде колеса, поэтому вы можете быть уверены, что Basedpyright будет работать на вашем компьютере независимо от того, установлен ли у вас nodejs.

Для изоляции обычно рекомендуется устанавливать исполняемые пакеты Python, используя pipx вместо pip. Давайте продолжим и сделаем это .


pipx install basedpyright


Для проверки работоспособности рассмотрите возможность запуска


basedpyright --version


Установкаbasedpyright также дает вам доступ к командеbasedpyright-langserver, но на самом деле она не предназначена для взаимодействия пользователей, поэтому, если вы запуститеbasedpyright-langserver илиbasedpyright-langserver --version или что-то в этом роде, вы получите трассировку стека nodejs.

Настройка emacs для использования Basedpyright-langserver

Я предполагаю, что вы, как читатель, знаете, как устанавливать пакеты из MELPA, и у вас есть предпочтительный способ это сделать. Вот все пакеты, которые вам нужны:

  • компания
  • lsp-режим
  • lsp-pyright
  • lsp-ui
  • режим Python

Установите их, затем откройте ~/.emacs или ~/.emacs.d/init.el и добавьте следующее:


;; lsp global settings
(add-hook 'after-init-hook 'global-company-mode)
(setq lsp-auto-guess-root t)

;; python
(require 'lsp-mode)
(setq lsp-pyright-langserver-command "basedpyright")
(add-hook 'python-mode-hook (lambda () (require 'lsp-pyright) (lsp)))


Это все, что вам нужно.

Общий совет по отладке lsp-режима

Если вы чувствуете, что все настроили правильно, но у вас по-прежнему возникают проблемы с запуском lsp-mode для поиска пакетов, которые должны быть доступны в Poetry, вы можете попробовать зайти и удалить свой ~/.emacs.d/.lsp-session-v1. Это приведет к тому, что lsp-mode забудет о корне проекта и заставит его искать его снова.

Приятного кодирования!

Надеюсь, это дало вам хороший старт в вашей среде разработки Python. Если у вас есть какие-либо вопросы, я новичок во всем этом и, вероятно, не смогу вам помочь, но я рассмотрю запросы на слияние, если у вас есть какие-либо дополнительные советы или рекомендации по использованиюbasedpyright с emacs.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/webbureaucrat/emacs-for-python-and-poetry-using-basedpyright-langserver-ca9?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3