Emacs – Le meilleur éditeur de Python? – Véritable Python

By | octobre 9, 2019

Formation Python

Jusqu'à présent, dans notre série d'articles sur les environnements de développement Python, nous avons examiné Sublime Text et VIM:

Dans cet article, nous présenterons un autre éditeur puissant pour le développement Python – Emacs. Il est indiscutable que Emacs est le meilleur éditeur, mais nous allons (essayer de) garder l’esprit ouvert et présenter Emacs de manière objective, d’une installation récente à un environnement de développement Python complet, afin que vous puissiez prendre une décision éclairée lorsque vous choisissez votre emplacement. à l'IDE Python.

Installation et bases

Installation

L'installation d'Emacs est un sujet qui n'a pas besoin d'être traité dans un autre article de blog. Ce guide, fourni par ErgoEmacs, vous permettra de démarrer avec une installation Emacs de base sous Linux, Mac ou Windows. Une fois installé, démarrez l’application et vous serez accueilli avec le système Emacs configuré par défaut:

Emacs fraîchement lancé

Emacs basique

Un autre sujet qui n'a pas besoin d'être abordé à nouveau est l'utilisation de base d'Emacs. Le moyen le plus simple d'apprendre à utiliser Emacs est de suivre le didacticiel intégré. Les sujets abordés dans ce message n'exigent pas que vous sachiez utiliser Emacs pour le moment. chaque sujet met en valeur ce que vous pouvez faire après avoir appris les bases.

Pour entrer dans le tutoriel, utilisez les touches fléchées pour positionner le curseur sur les mots «Tutoriel Emacs» et appuyez sur Entrer. Vous serez alors accueilli avec le passage suivant:

Les commandes Emacs impliquent généralement la touche CONTROL (parfois appelée
CTRL ou CTL) ou la clé META (parfois appelée EDIT ou ALT). Plutôt que
écrivez que dans son intégralité à chaque fois, nous utiliserons les abréviations suivantes:

 C-  signifie maintenir la touche CTRL enfoncée tout en tapant le caractère 
    Ainsi, C-f serait: maintenez la touche CTRL enfoncée et tapez f.
 M-  signifie maintenir la touche META ou EDIT ou ALT enfoncée pendant la frappe .
    S'il n'y a pas de touche META, EDIT ou ALT, appuyez et relâchez le bouton
    Touche ESC puis tapez . Nous écrivons  pour la touche ESC.

Ainsi, les entrées / commandes clés comme C-x C-s (qui est utilisé pour sauvegarder) sera affiché dans le reste du message. Cette commande indique que le Ctrl et X touche sont enfoncés en même temps, puis le bouton Ctrl et S clé. C'est la forme de base d'interaction avec Emacs. Suivez le tutoriel intégré ainsi que la visite guidée d’Emacs pour en savoir plus.

Configuration et packages

L'un des grands avantages d'Emacs est la simplicité et la puissance de la configuration. Le noyau de la configuration d’Emacs est le fichier d’initialisation, init.el.

Dans un environnement UNIX, ce fichier doit être placé dans $ HOME / .emacs.d / init.el:

$ touchez ~ / .emacs.d / init.el

Pendant ce temps, sous Windows, si le DOMICILE variable d’environnement n’est pas définie, ce fichier doit résider dans C: / .emacs.d / init.el. Voir la FAQ GNU Emacs pour MS Windows> Où dois-je placer mon fichier init? pour plus d'informations.

Des extraits de configuration seront présentés tout au long du message. Donc, créez le fichier init maintenant si vous voulez suivre. Sinon, vous pouvez trouver le fichier complet dans la conclusion.

Les packages sont utilisés pour personnaliser Emacs, qui proviennent de plusieurs référentiels. Le référentiel de packages Emacs principal est MELPA. Tous les packages présentés dans cet article seront installés à partir de ce référentiel.

Style (thèmes et plus)

Pour commencer, l'extrait de configuration suivant fournit l'installation du package et installe un package de thème:

;; init.el --- configuration Emacs

;; INSTALLER DES FORFAITS
;; --------------------------------------

(exiger 'paquet)

(ajouter à la liste 'paquet-archives
       '("melpa" . "http://melpa.org/packages/") t)

(paquet-initialiser)
(quand (ne pas package-archive-contents)
  (package-refresh-contents))

(defvar mes forfaits
  '(mieux par défaut
    matériau-thème))

(carte # '(lambda (paquet)
    (sauf si (paquet-installé-p paquet)
      (package-install paquet)))
      mes forfaits)

;; PERSONNALISATION DE BASE
;; --------------------------------------

(setq message de démarrage t) ;; cacher le message de démarrage
(thème de chargement 'Matériel t) ;; thème de chargement
(global-linum-mode t) ;; activer les numéros de ligne globalement

;; init.el se termine ici

La première section de l'extrait de configuration, ;; INSTALLER DES FORFAITS, installe deux paquets appelés mieux par défaut et matériau-thème. le mieux par défaut package est un ensemble de modifications mineures apportées aux valeurs par défaut d’Emacs, ce qui en fait une excellente base pour commencer à personnaliser. le matériau-thème package fournit un ensemble personnalisé de styles.

Mon thème préféré est matériau-thème, nous allons donc l'utiliser pour le reste du message.

La deuxième section ;; PERSONNALISATION DE BASE:

  1. Désactive le message de démarrage (il s'agit de l'écran avec toutes les informations du didacticiel). Vous voudrez peut-être laisser cela de côté jusqu'à ce que vous soyez plus à l'aise avec Emacs.
  2. Charge le thème du matériau.
  3. Active les numéros de ligne globalement.

Activer quelque chose de manière globale signifie qu'il s'appliquera à tous les tampons (éléments ouverts) dans Emacs. Donc, si vous ouvrez un fichier Python, Markdown et / ou texte, ils auront tous des numéros de ligne affichés. Vous pouvez également activer des éléments par mode – par exemple, en mode python, en mode markdown, en mode texte. Ceci sera montré plus tard lors de la configuration de Python.

Maintenant que nous avons un complet de base fichier de configuration, nous pouvons redémarrer Emacs et voir les modifications. Si vous avez placé le init.el fichier dans l'emplacement correct par défaut, il sera automatiquement ramassé.

Alternativement, vous pouvez démarrer Emacs à partir de la ligne de commande avec emacs -q --load . Une fois chargée, notre fenêtre initiale Emacs est un peu plus agréable:

Emacs

L'image suivante montre quelques autres fonctionnalités de base fournies avec Emacs, telles que la recherche de fichier simple et les présentations divisées:

Emacs fonctionnalités simples

Une de mes fonctionnalités simples préférées d’Emacs est la possibilité de faire une recherche rapide récursive-grep – M-x rgrep Par exemple, supposons que vous souhaitiez trouver toutes les occurrences du mot python dans tous .Maryland (démarque) dans un répertoire donné:

Emacs editor avec Elpy installé: support de rgrep

Une fois cette configuration de base terminée, nous pouvons commencer à configurer l'environnement pour le développement Python!

Elpy – Développement Python

Emacs est distribué avec un mode python (python.el) qui fournit l'indentation et la coloration syntaxique. Cependant, pour concurrencer les environnements de développement intégrés (IDE) spécifiques à Python, nous en voudrons certainement plus. Le paquetage elpy (Emacs Lisp Python Environment) nous fournit un ensemble presque complet de fonctionnalités IDE Python, notamment:

  • Indentation automatique,
  • Mise en évidence de la syntaxe,
  • Complétion automatique,
  • Vérification de la syntaxe,
  • Intégration Python REPL,
  • Support d'environnement virtuel, et
  • Beaucoup plus!

Pour installer et activer elpy, nous devons ajouter un peu de configuration et installer flake8 et Jedi en utilisant votre méthode préférée pour installer les paquetages Python (pip ou conda, par exemple).

Ce qui suit va installer le paquet elpy:

(defvar mes forfaits
  '(mieux par défaut
    Elpy ;; ajouter le paquet elpy
    matériau-thème))

Maintenant, activez-le simplement:

Avec la nouvelle configuration, nous pouvons redémarrer Emacs et ouvrir un fichier Python pour voir le nouveau mode en action:

Emacs éditeur avec Elpy installé

Les caractéristiques suivantes sont présentées dans cette image:

  • Indentation automatique (lorsque vous tapez et que vous appuyez sur RET, les lignes sont automatiquement mises en retrait)
  • Mise en évidence de la syntaxe
  • Vérification de la syntaxe (indicateurs d'erreur à la ligne 3)
  • Auto-complétion (liste des méthodes à la ligne 9+)

De plus, disons que nous voulons exécuter ce script. Dans quelque chose comme IDLE ou Sublime Text, vous aurez un bouton / une commande pour exécuter le script actuel. Emacs n'est pas différent, nous tapons juste C-C C-C dans notre tampon Python et…

Emacs éditeur avec Elpy installé

Souvent, nous souhaitons exécuter un environnement virtuel et exécuter notre code à l’aide des packages qui y sont installés. Pour utiliser un environnement virtuel dans Emacs, nous tapons M-x pyvenv-activate et suivez les instructions. Vous pouvez désactiver une virtualenv avec M-x pyvenv-désactiver. Elpy fournit une interface pour le débogage de l’environnement et de tout problème que vous pourriez rencontrer avec elpy lui-même. En tappant M-x elpy-config nous obtenons la boîte de dialogue suivante, qui fournit des informations précieuses pour le débogage:

Configuration d'Emacs Elpy

Avec cela, toutes les bases d'un IDE Python dans Emacs ont été couvertes. Maintenant, mettons la cerise sur le gâteau!

Fonctionnalités Python supplémentaires

En plus de toutes les fonctionnalités de base de l'EDI décrites ci-dessus, Emacs fournit des fonctionnalités supplémentaires pour Python. Bien que cette liste ne soit pas exhaustive, la conformité PEP8 (avec autopep8) et l'intégration avec IPython / Jupyter seront couvertes. Cependant, avant cela, voyons une préférence pour la vérification syntaxique rapide.

Meilleure vérification de la syntaxe (Flycheck v. Flymake)

Par défaut, Emacs + elpy est fourni avec un paquet nommé Flymake pour prendre en charge la vérification de la syntaxe. Cependant, un autre paquet Emacs, Flycheck, est disponible et prend en charge la vérification de la syntaxe en temps réel. Heureusement de sortir pour Flycheck est simple:

(defvar mes forfaits
  '(mieux par défaut
    Elpy
    flycheck ;; ajouter le paquet flycheck
    matériau-thème))

et

(quand (exiger 'flycheck néant t)
  (setq elpy-modules (delq 'elpy-module-flymake elpy-modules))
  (add-hook 'elpy-mode-hook 'flycheck-mode))

Nous obtenons maintenant des commentaires en temps réel lors de la modification du code Python:

Emacs: vérification de la syntaxe en temps réel avec flycheck

Conformité PEP8 (Autopep8)

Qu'on aime ou qu'on déteste, PEP8 est là pour rester. Si vous souhaitez respecter tout ou partie des normes, vous souhaiterez probablement un moyen automatisé de le faire. le autopep8 l'outil est la solution. Il s’intègre à Emacs pour que lorsque vous enregistrez – C-x C-sautopep8 formatera et corrigera automatiquement les erreurs PEP8 (à l’exception de celles que vous souhaitez).

Tout d'abord, vous devrez installer le paquet Python autopep8 en utilisant votre méthode préférée, puis ajoutez la configuration Emacs suivante:

(defvar mes forfaits
  '(mieux par défaut
    Elpy
    flycheck
    matériau-thème
    py-autopep8)) ;; ajouter le paquet autopep8

et

(exiger 'py-autopep8)
(add-hook 'elpy-mode-hook 'py-autopep8-enable-on-save)

Maintenant (après avoir forcé quelques erreurs pep8) lorsque nous sauvegardons notre fichier de démonstration Python, les erreurs seront automatiquement corrigées:

Emacs elpy auto PEP 8

Intégration IPython / Jupyter

La prochaine étape est une fonctionnalité vraiment intéressante: l’intégration d’Emacs avec IPython REPL et les ordinateurs portables Jupyter. Commençons par remplacer l’intégration standard Python REPL par la version IPython:

Maintenant, quand nous courons notre code Python avec C-C C-C on nous présentera le IPPLon REPL:

Emacs elpy ipython

Bien que cela soit très utile en soi, la véritable magie réside dans l'intégration de l'ordinateur portable. Nous supposerons que vous savez déjà comment lancer un serveur Jupyter Notebook (sinon, cochez cette case). Encore une fois, nous devons juste ajouter un peu de configuration:

(defvar mes forfaits
  '(mieux par défaut
    ein ;; ajouter le paquet ein (Emacs ipython notebook)
    Elpy
    flycheck
    matériau-thème
    py-autopep8))

L’interface Web standard de Jupyter pour ordinateurs portables est agréable mais nous oblige à laisser Emacs utiliser:

Jupyter notebook (interface web)

Cependant, nous pouvons effectuer exactement la même tâche en nous connectant et en interagissant avec le serveur de cahiers directement dans Emacs.

Emacs elpy jupyter

Fonctionnalités supplémentaires d'Emacs

Maintenant que toutes les fonctionnalités de base de l'EDI Python (et quelques extras vraiment impressionnants) ont été couvertes, il y a quelques autres choses qu'un IDE devrait être capable de gérer. Le premier est l'intégration git…

Intégration Git (Magit)

Magit est le paquet non utilitaire le plus populaire sur MELPA et est utilisé par presque tous les utilisateurs Emacs utilisant git. C’est incroyablement puissant et bien plus complet que ce que nous pouvons couvrir dans cet article. Heureusement, Maîtriser Emacs a un excellent article couvrant Magit ici. L'image suivante provient de l'article Mastering Emacs et vous donne un avant-goût de l'intégration de git dans Emacs:

Emacs magit plugin

Autres modes

L'un des principaux avantages de l'utilisation d'Emacs sur un IDE spécifique à Python est que vous obtenez une compatibilité avec beaucoup plus que Python. En une seule journée, je travaille souvent avec Python, Golang, JavaScript, Markdown, JSON, etc. Ne jamais quitter Emacs et avoir un support complexe pour toutes ces langues dans un seul éditeur est très efficace. Vous pouvez consulter ma configuration personnelle Emacs ici. Il comprend un soutien pour:

  • Python
  • Golang
  • Rubis
  • Fantoche
  • Réduction
  • Dockerfile
  • YAML
  • Web (HTML / JS / CSS)
  • TOUPET
  • NginX Config
  • SQL

En plus de nombreux autres avantages de la configuration Emacs.

Emacs dans le terminal

Après avoir appris Emacs, vous voudrez utiliser les raccourcis clavier Emacs partout. C'est aussi simple que de taper set -o emacs à votre invite bash. Cependant, l’un des pouvoirs d’Emacs est qu’il est possible d’exécuter Emacs lui-même en mode sans tête dans votre terminal. Ceci est mon environnement par défaut. Pour ce faire, lancez simplement Emacs en tapant emacs -nw à l’invite de votre bash et vous utiliserez un Emacs sans tête.

Conclusion

Comme vous pouvez le constater, Emacs est clairement le meilleur éditeur. Pour être juste, il existe de nombreuses options intéressantes pour les IDE Python, mais je recommanderais absolument d'apprendre à utiliser Vim ou Emacs, qui sont de loin les environnements de développement les plus polyvalents possibles. .

J'ai dit que je vous laisserais avec la configuration complète d'Emacs, donc voici:

;; init.el --- configuration Emacs

;; INSTALLER DES FORFAITS
;; --------------------------------------

(exiger 'paquet)

(ajouter à la liste 'paquet-archives
       '("melpa" . "http://melpa.org/packages/") t)

(paquet-initialiser)
(quand (ne pas package-archive-contents)
  (package-refresh-contents))

(defvar mes forfaits
  '(mieux par défaut
    ein
    Elpy
    flycheck
    matériau-thème
    py-autopep8))

(carte # '(lambda (paquet)
    (sauf si (paquet-installé-p paquet)
      (package-install paquet)))
      mes forfaits)

;; PERSONNALISATION DE BASE
;; --------------------------------------

(setq message de démarrage t) ;; cacher le message de démarrage
(thème de chargement 'Matériel t) ;; thème de chargement
(global-linum-mode t) ;; activer les numéros de ligne globalement

;; CONFIGURATION DE PYTHON
;; --------------------------------------

(elpy-enable)
(elpy-use-ipython)

;; utilisez flycheck pas flymake avec elpy
(quand (exiger 'flycheck néant t)
  (setq elpy-modules (delq 'elpy-module-flymake elpy-modules))
  (add-hook 'elpy-mode-hook 'mode flycheck))

;; activer le formatage autopep8 lors de l'enregistrement
(exiger 'py-autopep8)
(add-hook 'elpy-mode-hook 'py-autopep8-enable-on-save)

;; init.el se termine ici

Espérons que cette configuration va déclencher votre voyage Emacs!