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.
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.
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.
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.
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:
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.
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.
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.
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