Emacs es un excelente editor; sin embargo, se dice que " para programar primero necesita un IDE ", entonces, ¿cómo crearía un IDE en el Emacs para PYTHON ampliamente personalizable con todas las características del IDE moderno? Quiero poder depurar, ejecutar y compilar de manera efectiva y administrar el código. Hasta ahora he leído sobre el tema en el que he instalado el paquete Elpy, pero no estoy seguro de qué más necesita saber y hacer para que esto sea posible.
56
Respuestas:
El modo predeterminado de Python en Emacs tiene una serie de características, incluida la finalización del código basada en el shell inferior de Python, por lo que puede usarse como un IDE básico sin ningún paquete agregado. También puede usar otras funciones centrales de Emacs con Python. Por ejemplo,
M-x compile
/M-x recompile
se puede usar para ejecutar pruebas.M-x pdb
puede ejecutar el depurador de Python, y se integra con el entorno gud de Emacs para que realmente obtenga puntos de interrupción en línea.Para ampliar eso, hay tres paquetes principales para Emacs que intentan implementar un IDE de Python más funcional (en orden alfabético):
Todos proporcionan aproximadamente las mismas características:
Más allá de estos, Emacs también puede ayudarlo con muchos flujos de trabajo, pero no prescribe ninguno. Entonces, los siguientes pasos dependen mucho de cómo esté usando Python. El mejor enfoque aquí sería encontrar un buen flujo de trabajo de Python y luego tratar de encontrar paquetes de Emacs que lo ayuden específicamente con los pasos de su flujo de trabajo.
Por ejemplo, hay múltiples paquetes para trabajar con virtualenvs (Elpy, que usted menciona, viene con pyvenv) que probablemente debería usar. Emacs-Jedi tiene un modo de navegación de código que puede ser útil. Si usa mucho IPython, hay un cuaderno de IPython para Emacs. Existen modos de soporte especiales para el desarrollo de Django, etc. - puede ir a http://melpa.org/ y buscar Python para obtener algunas ideas.
Fuera de Python, puede beneficiarse de algunos paquetes adicionales de Emacs que ayudan con el desarrollo en general. Projectile es un paquete genérico para la gestión de proyectos que le brinda una serie de características interesantes, como buscar en un proyecto o moverse entre pruebas e implementaciones. Si aún no se ha instalado como una dependencia del paquete IDE de su elección, también puede usar YASnippet, que proporciona fragmentos inteligentes para la generación de código. La colección de fragmentos predeterminada también tiene una gran cantidad de fragmentos para Python.
Pero, una vez más, los principales paquetes IDE anteriores le brindarán un entorno sano: los próximos pasos dependen en gran medida de sus flujos de trabajo específicos.
(Divulgación completa: soy el autor de Elpy, así que tenlo en cuenta al leer lo anterior).
fuente
elpy
diario y tengo una pregunta rápida sobre su respuesta, cuando dice que "M-x pdb
puede ejecutar el depurador de Python" , ¿cómo es esto exactamente? Tengo un búfer de Python, y cuando lo hagoM-x pdb
, aparece un mensaje en el minibúfer que dice"Run pdb (like this): pdb my_file.py"
. CuandoRET
presiono me sale "ImportError: ningún módulo llamado pdb.pdb: 'pdb no es un paquete" Esto es con el último PYthon 3.4 después de actualizar pdb con pip, lo que me da:$ pip freeze | grep pdb => pdb==0.1
pdb
no se encuentra, peropython
se encuentra localmente, puede ejecutar pdb usandoM-x pdb
"Ejecutar pdb (así): python -m pdb my_file.py`Animaría a los usuarios de evil-emacs a probar spacemacs .
Tiene una capa de pitón brillante, vea los detalles aquí: https://github.com/syl20bnr/spacemacs/tree/master/layers/!lang/python
A partir de ahora, incluye:
La instalación es ridículamente fácil, solo agregue la siguiente línea a su
~/.spacemacs
:fuente
dotspacemacs-configuration-layers
.Yo uso el modo de propósito . Esto le permite definir un entorno bastante robusto.
Utilizando
elpy
,pydoc
yneotree
tengo un entorno bastante robusto (en el sentido de que las ventanas no hacen cosas extrañas en caso de error). Esto también puede funcionar bastante biengud-pdb
para la depuración.fuente
Aquí hay una guía completa: http://wikemacs.org/wiki/Python Enumera soluciones listas para usar (el kit de inicio Prelude , Spacemacs, soluciones para ciencia de datos , ...), grandes paquetes útiles (Elpy), también como cada paquete que necesita para mejorar su entorno. Aquí hay una descripción general .
Refactorización
Esta es la característica más "específica de IDE". Emacs como algunas posibilidades gracias a la biblioteca Rope python. Resulta que la forma más fácil de instalar y usar es el paquete emacs-traad , en MELPA. Cuenta, entre otros:
La cuerda también está incluida en Elpy.
Manipulación de código más simple
Tenemos herramientas más simples para ayudar a refactorizar o manipular código: http://wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools
Por ejemplo, Projectile es genial (ver otras respuestas), también tenemos una herramienta para agregar decoradores , agregar / eliminar / editar argumentos , renombrar / copiar / comentar / eliminar un método, una herramienta para la generación de código, ...
Código de navegación
Podemos navegar como un IDE con etiquetas y cscope: encontrar las funciones que llaman a esta, buscar ocurrencias, etc.
Emacs también tiene excelentes paquetes como imenu (helm-imenu), helm-swoop (grep interactivo en un búfer), emacs-helm-ag (buscador de plata interactivo en un proyecto), etc.
Ejecutando pruebas
Es Elpy que proporciona un buen soporte para ejecutar pruebas (con el django runner, elpy u otro). Incluso podemos ejecutar solo la prueba de unidad en la que nos encontramos actualmente: ¡muy útil! Entonces, hay una Hydra para ayudar con eso (ciclo entre los errores, cambie al indicador de Python ...).
Hacer apoyo
Este es un paquete de Emacs no específico para Python. Pero me gusta poder ejecutar un objetivo de creación desde cualquier parte del proyecto y elegir el comando de creación con finalización . enlazar
Tratando con la sangría
Hay un pequeño paquete, indent-tools , que proporciona comandos para trabajar directamente con un bloque sangrado: pasar al siguiente bloque de sangría padre-hijo anterior, sangrar / deindent / comment / copy / kill / fold el bloque actual , Perfecto para yaml, y también para Python. Doc y gif de demostración
Soporte Django
Ver Django . Elpy es compatible con el corredor django. Ver elpy django doc . django-mode (en melpa) tiene resaltado de plantillas, comandos rápidos, finalización de comandos de administración , ...
También importante: excelente soporte para Git, Github y Gitlab
magithub puede crear relaciones públicas de github, podemos buscar problemas e insertar su referencia en los mensajes de confirmación, magit es genial, ... ver http://wikemacs.org/wiki/Git
fuente
Las respuestas aquí han proporcionado la mayoría de las características importantes que proporciona spacemacs, pero siempre hubo una característica que no pude encontrar: DEPURACIÓN (No encontré ninguna herramienta de depuración decente que funcione bien con los spacemacs hasta hace muy poco)
Entonces, ¿cómo configuré un flujo de trabajo de depuración para mis spacemacs?
Hay una rama de características en desarrollo que utiliza el paquete realgud.el para proporcionar una experiencia de depuración similar a IDE en spacemacs: https://github.com/CeleritasCelery/spacemacs Todo lo que tiene que hacer es colocar esta rama en sus .emacs. d directorio y realice algunos cambios en su archivo ~ / .emacs.d / layers / + lang / python / packages.el
Pasos detallados para configurar los spacemacs para la depuración (Respire profundamente)
remote add debug-layer https://github.com/CeleritasCelery/spacemacs fetch debug-layer checkout --track debug-layer/debug-layer branch -a
Ahora abra ~ / .emacs.d / layers / + lang / python / packages.el y agregue la siguiente función al final del archivo
;; configure trepan3k as the python debugger to be used with realgud (defun python/pre-init-realgud() (dolist (mode '(anaconda-mode)) ;; bind trepan3k with anaconda mode (spacemacs|add-realgud-debugger mode "trepan3k")))
Esta función utiliza el depurador trepan3k como depurador de python. Puede cambiar el valor a pdb o ipdb o al depurador que desee. Si planea usar trepan3k, asegúrese de instalarlo con pip,sudo pip install trepan3k
ya que no viene preinstalado con su distribución de python.Ahora abra su archivo .spacemacs y la capa 'debug' dentro de dotspacemacs-configuration-layers como esta
dotspacemacs-configuration-layers '( (python :variables python-enable-yapf-format-on-save t flycheck-disabled-checkers '(python-flake8) flycheck-checker 'python-pylint ) debug )
Esto iniciará la sesión de depuración y puede agregar, eliminar puntos de interrupción utilizando las combinaciones de teclas de realgud explicadas aquí: https://github.com/realgud/realgud#source-window-commands
Ya terminaste!
fuente