"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Emacs para Python e Poesia usando `basedpyright-langserver`

Emacs para Python e Poesia usando `basedpyright-langserver`

Publicado em 2024-11-05
Navegar:599

Emacs for Python and Poetry Using `basedpyright-langserver`

Estou muito satisfeito com minha configuração atual do emacs para Python, mas achei a configuração um pouco complicada. Documentarei minha configuração aqui para meu futuro e para qualquer outro Pythonista que esteja procurando uma configuração sólida do emacs.

Por que se baseia em direitos autorais?

Até este ponto, tenho usado mypy --strict na linha de comando para todas as minhas necessidades de verificação de tipo, mas mypy é bastante lento mesmo para bases de código muito pequenas, e mesmo no modo --strict não é tão tão rigoroso quanto poderia ser. Também não é um servidor de idiomas, o que desejo para minha configuração do emacs.

basedpyright é um fork do pyright com algumas melhorias excelentes tanto na verificação quanto na confiabilidade. É um verificador de tipos rápido e maravilhosamente rigoroso, com alguns bons recursos de linting adicionais.

As únicas desvantagens que estou enfrentando são que ele não funciona tão bem quanto mypy com os clientes boto3-stubs para AWS e que usa # pyright: ignore comments não padrão em vez do padrão # type: ignore comments, mas Posso conviver com essas questões em favor de uma experiência de verificação de tipo rigorosamente rigorosa.

Configurando seus projetos de Poesia para funcionarem com base em direitos autorais ou direitos autorais

Se você já possui projetos que usam Poesia, você vai querer mexer um pouco em seu ambiente virtual.

Vá para a raiz de cada um dos seus projetos e execute o seguinte comando:


poetry config --local virtualenvs.in-project true


Isso criará um arquivo poetry.toml se ainda não existir e adicionará uma configuração correspondente.

Isso, no entanto, não realmente moverá seu ambiente virtual existente. Para que esta alteração tenha efeito, você deve remover seu ambiente virtual existente, que pode ser encontrado executando


poetry env info --path


Não se esqueça de adicionar o caminho .venv ao seu .gitignore e a configuração de quaisquer outras ferramentas que você possa usar, como pycodestyle, ou você acabará com uma bagunça.

Em seguida, você deve adicionar uma seção de configuração ao seu pyproject.toml para informar ao basedpyright onde procurar seu ambiente virtual.


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


Você também pode fazer isso no arquivo pyrightconfig.json se, ao contrário de mim, você ainda não se sente completamente sobrecarregado com arquivos de configuração para diferentes ferramentas de desenvolvimento Python.

Instalando o basedpyright como servidor de idiomas

Uma coisa muito boa sobre basedpyright sobre pyright é que ele cria a dependência do nodejs como uma roda, então você pode ter certeza de que basedpyright deve funcionar em sua máquina, independentemente de você ter o nodejs instalado.

Para isolamento, geralmente é uma boa ideia instalar pacotes executáveis ​​​​do Python usando pipx em vez de pip. Vamos em frente e fazer isso.


pipx install basedpyright


Para uma verificação de sanidade, considere correr


basedpyright --version


A instalação do basedpyright também fornece acesso ao comando basedpyright-langserver, mas isso não foi realmente escrito para os usuários interagirem, portanto, se você executar o basedpyright-langserver ou o basedpyright-langserver --version ou algo assim, obterá um rastreamento de pilha do nodejs.

Configurando o emacs para usar basedpyright-langserver

Presumo que você, como leitor, saiba como instalar pacotes do MELPA e tenha uma maneira preferida de fazer isso. Aqui estão todos os pacotes que você precisa:

  • empresa
  • modo lsp
  • lsp-pyright
  • lsp-ui
  • modo python

Instale-os e abra seu ~/.emacs ou seu ~/.emacs.d/init.el e adicione o seguinte:


;; 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)))


Isso deve ser tudo que você precisa.

Uma dica geral para depurar o modo lsp

Se você acha que configurou tudo corretamente e ainda está tendo problemas para obter o modo lsp para encontrar pacotes que deveriam estar disponíveis no Poetry, uma coisa que você pode tentar é entrar e excluir seu ~/.emacs.d/.lsp-session-v1. Isso fará com que o modo lsp esqueça a raiz do projeto e forçá-lo a procurá-la novamente.

Boa codificação!

Espero que isso tenha lhe dado uma boa vantagem em seu ambiente de desenvolvimento Python. Se você tiver alguma dúvida, bem, sou iniciante em tudo isso e provavelmente não posso ajudá-lo, mas considerarei solicitações de mesclagem se você tiver dicas ou truques extras para usar o basedpyright com o emacs.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/webbureaucrat/emacs-for-python-and-poetry-using-basedpyright-langserver-ca9?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3