Votre environnement de développement

Éditeurs de texte

Tout ce qui peut éditer du texte brut peut fonctionner pour l’écriture de code Python. Cependant, utiliser un éditeur plus puissant peut vous rendre la vie un peu plus facile.

Vim

Vim est un éditeur de texte qui utilise des raccourcis clavier pour éditer au lieu de menus ou d’icônes. Il y a des couples plugins et paramètres pour l’éditeur Vim pour faciliter le développement Python. Si vous développez seulement en Python, un bon point de départ est de définir les paramètres par défaut pour l’indentation et les valeurs pour les retours à la ligne conformes à PEP 8. Dans votre répertoire “home”, ouvrez un fichier appelé .vimrc et ajoutez les lignes suivantes:

set textwidth=79  " lines longer than 79 columns will be broken
set shiftwidth=4  " operation >> indents 4 columns; << unindents 4 columns
set tabstop=4     " a hard TAB displays as 4 columns
set expandtab     " insert spaces when hitting TABs
set softtabstop=4 " insert/delete 4 spaces when hitting a TAB/BACKSPACE
set shiftround    " round indent to multiple of 'shiftwidth'
set autoindent    " align the new line indent with the previous line

Avec ces configurations, des retours à la ligne sont insérés après 79 caractères et l’indentation est définie à 4 espaces par tabulation. Si vous utilisez Vim pour d’autres langages, il y a un plugin pratique appelé indent, qui peut gérer la configuration de l’indentation des fichiers source Python.

Il y a aussi un plugin de syntaxe pratique appelée syntax avec quelques améliorations par rapport au fichier de syntaxe inclus dans Vim 6.1.

Ces plugins vous fournissent un environnement de base pour le développement en Python. Pour tirer le meilleur parti de Vim, vous devriez vérifier en continu votre code pour les erreurs de syntaxe et la conformité à PEP8. Heureusement, PEP8 and Pyflakes vont le faire pour vous. Si votre Vim est compilé avec +python, vous pouvez également utiliser certains plugins très pratiques pour faire ces vérifications depuis l’éditeur.

Pour vérification PEP8 et pyflakes, vous pouvez installer vim-flake8. Maintenant, vous pouvez mapper la fonction Flake8 à tout raccourci clavier ou de action que vous voulez dans Vim. Le plugin affichera les erreurs au bas de l’écran, et fournira un moyen facile de sauter à la ligne correspondante. Il est très pratique d’appeler cette fonction chaque fois que vous enregistrez un fichier. Pour ce faire, ajoutez la ligne suivante à votre .vimrc:

autocmd BufWritePost *.py call Flake8()

Si vous utilisez déjà syntastic, vous pouvez le configurer pour exécuter Pyflakes à l’écriture et montrer les erreurs et avertissements dans la fenêtre de correction rapide. Un exemple de configuration pour faire cela et qui montre également le statut et les messages d’alerte dans la barre d’état serait

set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_auto_loc_list=1
let g:syntastic_loc_list_height=5

Python-mode

Python-mode est une solution complexe pour travailler avec du code Python dans Vim. Il a:

  • Vérification de code Python asynchrone (pylint, pyflakes, pep8, mccabe) avec n’importe quelle combinaison

  • Refactoring de code et autocomplétion avec Rope

  • Dépliage de code Python rapide

  • Support de virtualenv

  • Recherche dans la documentation Python et exécution de code Python

  • Correction automatiques des erreurs PEP8

Et plus.

SuperTab

SuperTab est un petit plugin Vim qui rend la complétion de code plus pratique en utilisant la touche <Tab> (tabulation) ou n’importe quelles autres touches personnalisées.

Emacs

Emacs est un autre éditeur de texte puissant. Il est entièrement programmable (Lisp), mais il peut nécessiter un peu de travail pour être correctement configurer. Un bon début si vous êtes déjà un utilisateur Emacs est Python Programming in Emacs sur EmacsWiki.

  1. Emacs lui-même contient un mode pour Python.

TextMate

TextMate apporte l’approche d’Apple aux systèmes d’exploitation dans le monde des éditeurs de texte. En établissant un pont entre les fondements UNIX et les interfaces graphiques,TextMate choisit le meilleur des deux mondes au bénéfice aussi bien des scripteurs experts que des utilisateurs novices.

Sublime Text

Sublime Text est un éditeur de texte raffiné pour le code, le balisage et la prose. Vous allez adorer l’interface utilisateur agréable, les fonctionnalités extraordinaires et les performances incroyables.

Sublime Text offre un excellent support pour l’édition du code Python et utilise Python pour son API de plugin. Il a également une grande diversité de plugins, certains permettent une vérification PEP8 dans l’éditeur et le “linting” de code.

Atom

Atom est un éditeur de texte hackable pour le 21e siècle, construit sur atom-shell et sur la base de tout ce que nous aimons dans nos éditeurs favoris.

Atom est basé sur le web (HTML, CSS, JS), en se concentrant sur une conception modulaire et le développement de plugin facile. Il est livré avec un gestionnaire de paquets natif et une pléthore de paquets. Il est recommandé pour le développement Python d’utiliser Linter combiné avec linter-flake8.

IDEs

PyCharm / IntelliJ IDEA

PyCharm est développé par JetBrains, aussi connu pour IntelliJ IDEA. Les deux partagent la même base de code et la plupart des fonctionnalités de PyCharm peuvent être accessibles dans IntelliJ avec le Plug-in Python gratuit. Il y a deux versions de PyCharm: une édition Professionnel (avec 30 jours d’essai gratuits) et une édition Communautaire (sous licence Apache 2.0) avec moins de fonctionnalités.

Enthought Canopy

Enthought Canopy est un IDE Python qui est axé vers les scientifiques et les ingénieurs car il fournit des bibliothèques pré-installées pour l’analyse de données.

Eclipse

Le plugin Eclipse le plus populaire pour le développement Python est PyDev de Aptana.

Komodo IDE

Komodo IDE est développé par ActiveState et est un IDE commercial pour Windows, Mac et Linux. KomodoEdit est l’alternative open source.

Spyder

Spyder est un IDE spécifiquement orienté vers l’utilisation de bibliothèques Python scientifiques (notamment Scipy). Il inclut l’intégration avec pyflakes, pylint et rope.

Spyder est open-source (libre), offre la complétion de code, la coloration syntaxique, un navigateur de classes et de fonctions et l’inspection d’objets.

WingIDE

WingIDE est un IDE spécifique Python. Il fonctionne sur Linux, Windows et Mac (comme application X11, ce qui frustre certains utilisateurs de Mac).

WingIDE offre la complétion de code, la coloration syntaxique, la navigation de sources, le débogueur graphique et le support pour les systèmes de gestion de version.

NINJA-IDE

NINJA-IDE (depuis l’acronyme récursif: “Ninja-IDE Is Not Just Another IDE”) est un IDE multi-plateformes, spécialement conçu pour créer des applications Python, et qui fonctionne sous les systèmes d’exploitation de bureau Linux/X11, Mac OS X et Windows. Les installateurs pour ces plates-formes peuvent être téléchargés à partir du site web.

NINJA-IDE est un logiciel open-source (licence GPLv3) et est développé en Python et Qt. Les fichiers source peuvent être téléchargés depuis GitHub.

Eric (l’IDE Python Eric)

Eric est un IDE Python très complet offrant l’autocomplétion du code source, la coloration syntaxique, le support des systèmes de gestion de version, le support Python 3, un navigateur Web intégré, un shell python, un débogueur intégré et un système de plug-in flexible. Écrit en Python, il est basé sur la boîte à outils graphique Qt, intégrant le contrôle de l’éditeur Scintilla. Eric est un projet de logiciel open-source (licence GPLv3) avec plus de dix ans de développement actif.

Outils pour l’interpréteur

Environnements virtuels

Les environnements virtuels fournissent un moyen puissant pour isoler les dépendances de paquets d’un projet. Cela signifie que vous pouvez utiliser des paquets particuliers à un projet Python sans les installer sur l’ensemble du système et ainsi en évitant ainsi la les conflits de version potentiels.

Pour commencer à l’utiliser et plus d’informations: documents sur les environnements virtuels.

pyenv

pyenv est un outil pour autoriser l’installation de plusieurs versions de l’interpréteur Python en même temps. Cela résout le problème d’avoir différents projets nécessitant différentes versions de Python. Par exemple, il devient très facile d’installer Python 2.7 pour la compatibilité dans un projet, tout en utilisant Python 3.4 comme l’interpréteur par défaut. pyenv n’est pas limité aux versions CPython - installera également les interpréteurs PyPy, anaconda, miniconda, Stackless, Jython et IronPython.

pyenv fonctionne en remplissant un répertoire shims avec des fausses versions de l’interpréteur Python (plus d’autres outils comme pip et 2to3). Quand le système recherche un programme nommé python, il regarde en premier dans le répertoire shims, et utilise la fausse version, qui à son tour transmet la commande à pyenv. pyenv ensuite détermine quelle version de Python doit être exécutée en fonction des variables d’environnement, de fichiers .python-version et de l’environnement global par défaut.

pyenv n’est pas un outil pour la gestion des environnements virtuels, mais il y a le plugin pyenv-virtualenv qui automatise la création de différents environnements, et permet également de utiliser les outils de pyenv existants pour passer à des différents environnements à partir de variables d’environnement ou de fichiers .python-version.

Autres outils

IDLE

IDLE est un environnement de développement intégré (IDE) qui fait partie de la bibliothèque Python standard. Il est entièrement écrit en Python et utilise la boîte à outils graphique Tkinter. Bien IDLE ne convienne pas pour le développement à part entière en utilisant Python, il est très utile pour essayer de petits bouts de code Python et expérimenter avec les différentes fonctionnalités en Python.

Il fournit les fonctionnalités suivantes:

  • Fenêtre du shell Python (interpréteur)

  • Éditeur de texte multi-fenêtres qui colorie le code Python

  • Facilité de débugage minimale

IPython

IPython fournit une boîte à outils riche pour vous aider à tirer le meilleur parti de l’interactivité de Python. Ses principales composants sont:

  • Shells Python puissants (basés sur le terminal et Qt)

  • Un “notebook” basé sur le Web avec les mêmes caractéristiques de base, mais le support de médias riches, du texte, du code, des expressions mathématiques et des graphiques intégrés “inline”.

  • Support pour la visualisation interactive de données et l’utilisation de boîtes à outils avec interface graphique.

  • Interpréteurs flexibles, intégrables à charger dans vos propres projets.

  • Outils pour le traitement parallèle interactif et de haut niveau.

$ pip install ipython

Pour télécharger et installer IPython avec toutes ses dépendances optionnelles pour le notebook, qtconsole, les tests et les autres fonctionnalités

$ pip install ipython[all]

BPython

bpython est une interface alternative à l’interpréteur Python pour les systèmes d’exploitation de type Unix. Il a les caractéristiques suivantes:

  • Coloration syntaxique “in-line”.

  • Autocomplétion similaire à readline avec suggestions affichées au fur à mesure que vous tapez.

  • Liste des paramètres attendus pour n’importe quelle fonction Python.

  • Fonction “Rewind” pour réafficher la dernière ligne de code depuis la mémoire et la ré-évaluer.

  • Envoyez le code entré vers un pastebin.

  • Sauvegarde du texte entré dans un fichier.

  • Auto-indentation

  • Support Python 3.

$ pip install bpython

ptpython

ptpython est une ligne de commande interactive (REPL) construite par dessus la bibliothèque prompt_toolkit. Elle est considérée comme une alternative à BPython. Les fonctionnalités incluent:

  • Coloration syntaxique

  • Autocomplétion

  • Édition multi-lignes

  • Emacs et mode VIM

  • Encapsulation d’une ligne de commande interactive (REPL) à l’intérieur de votre code

  • Validation de syntaxe

  • Pages de tabulation

  • Support pour l’intégration avec le shell IPython, en installant IPython pip install ipython et en exécutant ptipython.

$ pip install ptpython