Я очень доволен своей текущей настройкой emacs для Python, но настройка показалась мне немного сложной. Я задокументирую здесь свою настройку для себя в будущем и для всех других питонистов, которым нужна надежная конфигурация emacs.
До этого момента я использовал mypy --strict в командной строке для всех своих нужд по проверке типов, но mypy работает довольно медленно даже для очень маленьких кодовых баз, и даже в режиме --strict он не так хорош. насколько это возможно строго. Это также не языковой сервер, который мне нужен для установки emacs.
basedpyright — это форк Pyright с некоторыми отличными улучшениями как в проверке, так и в надежности. Это быстрая и удивительно строгая проверка типов с некоторыми хорошими возможностями проверки типов.
Единственные недостатки, с которыми я столкнулся, заключаются в том, что он не так хорошо работает, как mypy, с клиентами boto3-stubs для AWS, и что он использует нестандартный # пирайт: игнорировать комментарии вместо стандартного # типа: игнорировать комментарии, но Я могу смириться с этими проблемами, предпочитая строго строгую проверку типов.
Если у вас уже есть проекты, использующие 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 по сравнению с Pyright заключается в том, что он строит зависимость nodejs в виде колеса, поэтому вы можете быть уверены, что Basedpyright будет работать на вашем компьютере независимо от того, установлен ли у вас nodejs.
Для изоляции обычно рекомендуется устанавливать исполняемые пакеты Python, используя pipx вместо pip. Давайте продолжим и сделаем это .
pipx install basedpyright
Для проверки работоспособности рассмотрите возможность запуска
basedpyright --version
Установкаbasedpyright также дает вам доступ к командеbasedpyright-langserver, но на самом деле она не предназначена для взаимодействия пользователей, поэтому, если вы запуститеbasedpyright-langserver илиbasedpyright-langserver --version или что-то в этом роде, вы получите трассировку стека nodejs.
Я предполагаю, что вы, как читатель, знаете, как устанавливать пакеты из MELPA, и у вас есть предпочтительный способ это сделать. Вот все пакеты, которые вам нужны:
Установите их, затем откройте ~/.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-mode для поиска пакетов, которые должны быть доступны в Poetry, вы можете попробовать зайти и удалить свой ~/.emacs.d/.lsp-session-v1. Это приведет к тому, что lsp-mode забудет о корне проекта и заставит его искать его снова.
Надеюсь, это дало вам хороший старт в вашей среде разработки Python. Если у вас есть какие-либо вопросы, я новичок во всем этом и, вероятно, не смогу вам помочь, но я рассмотрю запросы на слияние, если у вас есть какие-либо дополнительные советы или рекомендации по использованиюbasedpyright с emacs.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3