Emacs est un excellent éditeur - cependant, il est dit " pour programmer vous avez d'abord besoin d'un IDE " - alors, comment construire un IDE dans Emacs pour PYTHON, entièrement personnalisable, avec toutes les fonctionnalités de l'IDE moderne. Je veux pouvoir déboguer, exécuter, compiler et gérer efficacement du code. Jusqu'ici, j'ai lu sur le sujet que j'ai installé le paquet Elpy mais je ne suis pas sûr de ce qu'il faut savoir et faire pour rendre cela possible.
56
Réponses:
Le mode Python par défaut dans Emacs comporte un certain nombre de fonctionnalités, dont l'achèvement de code basé sur le shell Python inférieur, de sorte qu'il peut être utilisé en tant qu'EDI de base sans ajout de paquet. Vous pouvez également utiliser d’autres fonctions de base d’Emacs avec Python. Par exemple,
M-x compile
/M-x recompile
peut être utilisé pour exécuter des tests.M-x pdb
peut exécuter le débogueur Python, qui s’intègre à l’environnement gud d’ Emacs afin d’obtenir des points d’arrêt en ligne.Pour développer cela, il existe trois packages principaux pour Emacs qui tentent d'implémenter un environnement de développement intégré (IDE) Python plus fonctionnel (dans l'ordre alphabétique):
Ils offrent tous à peu près les mêmes caractéristiques:
Au-delà, Emacs peut également vous aider avec de nombreux flux de travail, mais il ne vous en prescrit aucun. Les prochaines étapes dépendent donc beaucoup de votre utilisation de Python. La meilleure approche ici serait de trouver un bon flux de travail Python, puis d'essayer de trouver des paquets Emacs qui vous aideront spécifiquement à suivre les étapes de votre flux de travail.
Par exemple, il existe plusieurs packages pour travailler avec virtualenvs (Elpy, que vous avez mentionné, livré avec pyvenv), que vous devriez probablement utiliser. Emacs-Jedi a un mode d' accompagnement pour la navigation dans le code qui peut être utile. Si vous utilisez beaucoup IPython, il existe un IPython Notebook for Emacs. Il existe des modes de support spéciaux pour le développement de Django, etc. - vous pouvez aller sur http://melpa.org/ et rechercher Python pour obtenir des idées.
En dehors de Python, vous pourriez bénéficier de paquets Emacs supplémentaires qui aident au développement en général. Projectile est un package générique de gestion de projet qui vous offre un certain nombre de fonctionnalités intéressantes, telles que la recherche dans un projet ou le passage d’un test à l’autre. S'il n'a pas encore été installé en tant que dépendance du paquet IDE de votre choix, vous pouvez également utiliser YASnippet, qui fournit des extraits intelligents pour la génération de code. La collection d'extraits de code par défaut contient également un grand nombre d'extraits de code pour Python.
Mais là encore, les principaux packages IDE ci-dessus vous procureront un environnement sain: les étapes suivantes dépendent en grande partie de vos flux de travail spécifiques.
(Divulgation complète: je suis l'auteur d'Elpy, tenez-en compte lors de la lecture de ce qui précède.)
la source
elpy
quotidiennement et ai une petite question sur votre réponse, quand vous dites que "M-x pdb
peut exécuter le débogueur Python" , comment est-ce exactement? J'ai un tampon Python, et quand je le faisM-x pdb
je reçois une invite dans le mini- tampon qui dit"Run pdb (like this): pdb my_file.py"
. Quand j'appuie sur,RET
j'obtiens "ImportError: Aucun module nommé pdb.pdb:" pdb n'est pas un paquet "Ceci est avec le dernier PYthon 3.4 après la mise à niveau de pdb avec pip, ce qui me donne:$ pip freeze | grep pdb => pdb==0.1
pdb
n'est pas trouvé, maispython
est trouvé localement, alors vous pouvez exécuter pdb en utilisantM-x pdb
ensuite "Exécuter pdb (comme ceci): python -m pdb mon_fichier.py`J'encourage les utilisateurs d'Emacs-méchants à essayer les spacemacs .
Il a une couche brillante de python, voyez les détails ici: https://github.com/syl20bnr/spacemacs/tree/master/layers/!lang/python
A partir de maintenant, il comprend:
L'installation est ridiculement facile, ajoutez simplement la ligne suivante à votre
~/.spacemacs
:la source
dotspacemacs-configuration-layers
. Ajoutez-le ici :)J'utilise le mode but . Cela vous permet de définir un environnement assez robuste.
En utilisant
elpy
,pydoc
etneotree
j’ai un environnement assez robuste (dans le sens où les fenêtres ne font pas des choses étranges par erreur). Cela peut aussi très bien fonctionnergud-pdb
pour le débogage.la source
Voici un guide complet: http://wikemacs.org/wiki/Python Il répertorie les solutions prêtes à l'emploi (le kit de démarrage Prelude , Spacemacs, les solutions pour l' informatique ,…), les gros packages utiles (Elpy), ainsi que comme chaque paquet dont vous avez besoin pour améliorer votre environnement. Voici un aperçu .
Refactoring
C'est la fonctionnalité la plus "spécifique à l'IDE". Emacs a quelques possibilités grâce à la bibliothèque Rope python. Il s’avère que le moyen le plus simple d’installer et d’utiliser le paquet emacs-traad , dans MELPA. Il comporte, entre autres:
La corde est également incluse dans Elpy.
Manipulation simplifiée du code
Nous avons des outils plus simples pour aider à refactoriser ou à manipuler du code: http://wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools
Par exemple, Projectile est génial (voir autres réponses), nous avons également un outil pour ajouter des décorateurs , ajouter / supprimer / modifier des arguments , renommer / copier / commenter / tuer une méthode, un outil pour la génération de code,…
Code de navigation
Nous pouvons naviguer comme un IDE avec des balises et cscope: trouver les fonctions qui appellent celle-ci, trouver des occurrences, etc.
Emacs propose également d’excellents forfaits comme imenu (helm-imenu), helm-swoop (grep interactif dans un tampon), emacs-helm-ag (chercheur d’argent interactif dans un projet), etc.
Lancer des tests
C'est Elpy qui fournit un bon support pour exécuter des tests (avec le coureur django, elpy ou un autre). Nous pouvons même exécuter uniquement le test unitaire dans lequel nous sommes actuellement: très pratique! Il y a donc une Hydra pour vous aider (cicle entre les erreurs, basculez vers l'invite python…).
Faire un soutien
Ceci est un paquet Emacs non spécifique à Python. Mais j'aime bien pouvoir exécuter une cible make à partir de n'importe où dans le projet et choisir la commande make avec achèvement . lien
Traiter avec l'indentation
Il y a un petit paquetage, indent-tools , qui donne aux commandes de travailler directement avec un bloc indenté: déplacez vers le bloc d'indentation parent-enfant précédent précédent, indent / deindent / comment / copy / kill / fold du bloc current , etc. Parfait pour yaml et aussi pour Python. Doc et gif demo
Support de Django
voir Django . Elpy soutient le coureur de Django. Voir elpy django doc . Django-mode (dans melpa) contient des modèles en surbrillance, des commandes rapides, l' achèvement des commandes de gestion ,…
Egalement important: le support de Git, Github et Gitlab
magithub peut créer des relations publiques github, nous pouvons récupérer des problèmes et insérer leur référence dans des messages commit, magit is great,… see http://wikemacs.org/wiki/Git
la source
Les réponses ici ont fourni la plupart des fonctionnalités importantes fournies par spacemacs mais il y avait toujours une fonctionnalité que je ne pouvais pas trouver: le débogage (je n'ai trouvé aucun outil de débogage décent qui fonctionne bien avec spacemacs jusqu'à une date récente)
Alors, comment ai-je mis en place un workflow de débogage pour mes spacemacs?
Il existe une branche en cours de développement qui utilise le paquet realgud.el pour fournir une expérience de débogage semblable à celle de IDE dans spacemacs: https://github.com/CeleritasCelery/spacemacs Tout ce que vous avez à faire est de tirer cette branche vers votre .emac. d et faites quelques changements dans votre fichier ~ / .emacs.d / layers / + lang / python / packages.el
Étapes détaillées pour configurer les spacemacs pour le débogage (respirez à fond)
remote add debug-layer https://github.com/CeleritasCelery/spacemacs fetch debug-layer checkout --track debug-layer/debug-layer branch -a
Ouvrez maintenant le fichier ~ / .emacs.d / layers / + lang / python / packages.el et ajoutez la fonction ci-dessous à la fin du fichier.
;; 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")))
Cette fonction utilise le débogueur trepan3k comme débogueur Python. Vous pouvez modifier la valeur en pdb ou ipdb ou selon le débogueur que vous préférez. Si vous envisagez d’utiliser trepan3k, assurez-vous de l’installer avec pipsudo pip install trepan3k
car il n’est pas livré avec votre distribution Python pré-installée.Ouvrez maintenant votre fichier .spacemacs et votre couche 'debug' dans les couches de configuration de dotspacemacs comme ceci
dotspacemacs-configuration-layers '( (python :variables python-enable-yapf-format-on-save t flycheck-disabled-checkers '(python-flake8) flycheck-checker 'python-pylint ) debug )
Cela va démarrer la session de débogage et vous pouvez ajouter, supprimer des points d'arrêt à l'aide de realgud keybindings expliquée ici: https://github.com/realgud/realgud#source-window-commands
Vous avez terminé!
la source