IPython 0.12

Posté par . Édité par Nÿco, saimn, Florent Zara, Bruno Michel et Manuel Menal. Modéré par Florent Zara. Licence CC by-sa
32
23
déc.
2011
Python

IPython, le terminal interactif pour Python, est arrivé à la version 0.12 quelques mois seulement après la version 0.11 qui avait eu une gestation de plus de deux ans. Il faut dire qu'il y a eu de gros changements au niveau du code pour passer à la version 0.11 et que la version 0.12 a pleinement profité de la facilité de développement qu'offrent git et Github. D'ailleurs le projet se porte bien puisque de nouveaux contributeurs sont recensés à en lire l'annonce de la sortie par Fernando Perez.

Cette version 0.12 s'accompagne de trois grosses nouveautés ou améliorations :

  • une interface web (notebook) ;
  • une interface graphique qui s'est enrichie (qtconsole) ;
  • une compatibilité totale avec Python 3.

IPython n'est pas le seul terminal interactif pour Python, il existe également bpython et DreamPie.

Sommaire

Pourquoi utiliser IPython ?

Alors que l'on peut parfaitement utiliser la console par défaut de Python, s'en contenter c'est se priver d'un certain confort. Voici une petite série d'arguments en faveur d'IPython.

Quelques avantages divers

Tout d'abord, les commandes Unix classiques sont utilisables en les précédant d'un ! ce qui simplifie le changement de répertoire ou la copie de fichiers. Le retour de la commande peut être stocké dans une objet, par exemple pour mettre les noms des fichiers et des dossiers du répertoire courant dans une liste :

objet = !ls

Le terminal permet la complétion des commandes, des objets Python, des répertoires et des fichiers. L'indentation est automatique, il n'y a plus à se poser la question des deux ou quatre espaces. Par exemple, 42 commandes plus tôt, vous aviez tapé une commande avec une foule d'option et plutôt que de taper 42 fois sur la flèche du haut : il suffit de taper les premières lettres de la commande puis la flèche du haut.

Les commandes magiques

Les commandes magiques sont une spécificité d'IPython. Voici quelques exemples :

  • %run permet d'exécuter un script.
  • %edit permet de modifier un fichier avec son éditeur préféré.
  • %debug permet de lancer le débogueur à l'endroit où le code s'est s'est arrêté.
  • %timeit permet de mesurer le temps d'exécution d'une expression.

Pour découvrir les autres fonctions magiques, il faut lire le retour de %lsmagic et pour voir la documentation d'une commande %commande_magique?.

Pylab ou l'interaction avec matplotlib

%pylab est une commande magique très puissante et très pratique pour le prototypage. Elle importe numpy, matplotlib et permet d'interagir avec les fenêtres matplotlib. Ainsi pour tracer une fonction simple quelques commandes suffisent, voyons par exemple le tracé des carrés de 0 à 9.

x = arange(10)
plot(x**2)

Pour nommer les axes et donner un titre c'est très simple également (avec la possibilité d'utiliser le style LaTeX) :

xlabel(r'$x$')
ylabel(r'$x^2$')
title(r'$f(x)=x^2$')

Interface web ou notebook

C'est la grosse nouveauté de cette version. Pour profiter de cette interface (la bibliothèque tornado dans une version supérieure ou égale à 2.1 est requise et ne pas oublier que matplotlib n'est pas encore compatible Python 3) avec la possibilité d'afficher des graphes directement dans la page, il faut ouvrir un terminal et lancer :

ipython notebook --pylab=inline

Par la suite avec un navigateur supportant le protocole websocket (Firefox et Chromium le supportent), il faut se connecter en local sur le port 8888. À partir de là, vous pouvez créer une page avec un mélange de texte et de commande. Pour le texte le formatage se fait en markdown et l'affichage des formules mathématiques profite de MathML et la syntaxe est celle de LaTeX qui sera placée entre $.

Une fois votre travail terminé, vous pouvez le sauvegarder pour la postérité sous la forme d'un fichier texte et le partager. Les images générées par vos scripts sont également sauvegardées dans le fichier ce qui peut le rendre un peu long.

exemple de l'interface web

À l'utilisation, on profitera de l'affichage de la documentation en cours de frappe comme dans la console graphique ou de son report dans la partie basse de la fenêtre ainsi que du complément des commandes. En cas d'erreur, vous pourrez éditer vos précédentes commandes ou corriger vos étourderies rédactionnelles.

L'interface graphique qtconsole

Cette interface apparue avec la version 0.11 s'est vu considérablement enrichie. Il est désormais possible d'avoir plusieurs onglets qui dépendent ou non d'une même instance IPython, il y a une barre de menu pour ceux qui ne se souviennent pas des commandes magiques d'IPython.

Ce mode graphique possède les mêmes fonctionnalités que la version dans un terminal à quelques exception près. Par exemple, il est possible d'afficher les graphiques directement sans devoir passer par l'ouverture d'une nouvelle fenêtre, en lançant ipython qtconsole --pylab=inline.

La documentation s'affiche au cours de la frappe, par exemple en tapant la commande range( il s'affichera :

range([start,] stop[, step]) -> range object

Returns a virtual sequence of numbers from start to stop by step.

Améliorations et corrections diverses

Comme toute bonne nouvelle version, le logiciel se peaufine. Désormais la même base de code fonctionne aussi bien avec Python 2 et Python 3. PyPy, dans sa version 1.7, donne de bons résultats avec IPython (version terminal) et demande à être testé. Il est possible que la l'interface web profite dans peu de temps des améliorations de performances induites par PyPy.

Les Vimistes peuvent toujours profiter des travaux de Paul Ivanov sur vim-python dont l'avancement se poursuit.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.