"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Emacs para Python y poesía usando `basedpyright-langserver`

Emacs para Python y poesía usando `basedpyright-langserver`

Publicado el 2024-11-05
Navegar:101

Emacs for Python and Poetry Using `basedpyright-langserver`

Estoy muy satisfecho con mi configuración actual de emacs para Python, pero la configuración me pareció un poco complicada. Documentaré mi configuración aquí para mi futuro y para cualquier otro Pythonista que busque una configuración sólida de emacs.

¿Por qué basarse en derechos de autor?

Hasta este punto, he estado usando mypy --strict en la línea de comando para todas mis necesidades de verificación de tipos, pero mypy es bastante lento incluso para bases de código muy pequeñas, e incluso en modo --strict simplemente no es tan tan estricto como podría ser. Tampoco es un servidor de idiomas, lo que quiero para mi configuración de emacs.

basedpyright es una bifurcación de pyright con excelentes mejoras tanto en la verificación como en la confiabilidad. Es un verificador de tipos rápido y maravillosamente estricto con algunas buenas capacidades adicionales de linting.

Los únicos inconvenientes que estoy experimentando son que no funciona tan bien como mypy con los clientes boto3-stubs para AWS y que utiliza # pyright no estándar: ignorar comentarios en lugar del estándar # tipo: ignorar comentarios, pero Puedo vivir con esos problemas a favor de una experiencia de verificación de tipos rigurosamente estricta.

Configurar sus proyectos de poesía para que funcionen con basedpyright o pyright

Si tienes proyectos existentes que utilizan Poetry, querrás jugar un poco con tu entorno virtual.

Vaya a la raíz de cada uno de sus proyectos y ejecute el siguiente comando:


poetry config --local virtualenvs.in-project true


Esto creará un archivo poetry.toml si aún no existe uno y agregará la configuración correspondiente.

Esto, sin embargo, no realmente moverá su entorno virtual existente. Para que este cambio surta efecto, debe eliminar su entorno virtual existente, que puede encontrar ejecutando


poetry env info --path


No olvides agregar la ruta .venv a tu .gitignore y la configuración de cualquier otra herramienta que puedas usar, como pycodestyle, o terminarás con Todo un desastre.

A continuación, debes agregar una sección de configuración a tu pyproject.toml para indicarle a basedpyright dónde buscar tu entorno virtual.


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


También puedes hacer esto en el archivo pyrightconfig.json si, a diferencia de mí, no te sientes completamente invadido por archivos de configuración para diferentes herramientas de desarrollo de Python.

Instalación de basedpyright como servidor de idiomas

Una cosa muy buena de basedpyright sobre pyright es que construye la dependencia de nodejs como una rueda, por lo que puedes estar seguro de que basedpyright debería funcionar en tu máquina independientemente de si tienes nodejs instalado.

Para el aislamiento, suele ser una buena idea instalar paquetes ejecutables de Python usando pipx en lugar de pip. Sigamos adelante y hagamos eso.


pipx install basedpyright


Para comprobar la cordura, considera ejecutar


basedpyright --version


La instalación de basedpyright también te da acceso al comando basedpyright-langserver, pero en realidad no está escrito para que los usuarios interactúen, por lo que si ejecutas basedpyright-langserver o basedpyright-langserver --version o algo así, obtendrás un seguimiento de la pila de nodejs.

Configurar emacs para usar basedpyright-langserver

Asumiré que usted, como lector, sabe cómo instalar paquetes de MELPA y tiene una forma preferida de hacerlo. Aquí están todos los paquetes que necesitas:

  • compañía
  • modo lsp
  • lsp-pyright
  • lsp-ui
  • modo Python

Instálelos y luego abra su ~/.emacs o su ~/.emacs.d/init.el y agregue lo siguiente:


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


Eso debería ser todo lo que necesitas.

Un consejo general para depurar el modo lsp

Si crees que has configurado todo correctamente y todavía tienes problemas para que el modo lsp encuentre paquetes que deberían estar disponibles en Poetry, una cosa que puedes intentar es entrar y eliminar tu ~/.emacs.d/.lsp-session-v1. Esto tendrá el efecto de hacer que el modo lsp se olvide de la raíz del proyecto y lo obligue a buscarlo nuevamente.

¡Feliz codificación!

Espero que esto te haya dado una buena ventaja en tu entorno de desarrollo Python. Si tiene alguna pregunta, bueno, soy un principiante en todo esto y probablemente no pueda ayudarlo, pero consideraré solicitudes de fusión si tiene algún consejo o truco adicional para usar basedpyright con emacs.

Declaración de liberación Este artículo se reproduce en: https://dev.to/webbureaucrat/emacs-for-python-and-poetry-using-basedpyright-langserver-ca9?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3