Personnalisez le démarrage d’iPython


iPython, c’est bon. Et ça peut être encore meilleur.

Avant on ajoutait un peu de sel à notre super shell en éditant les fichiers .ipython/ipythonrc et .ipython/ipy_user_conf.py. Mais ça c’était avant.

Maintenant on fait :

$ ipython profile create

Ce qui va créer un fichier ~/.config/ipython/profile_default/ipython_config.py (et ipython_qtconsole_config.py si vous avez installé la version qt).

Il ne vous reste plus qu’à éditer ce fichier pour personnaliser le démarrage de iPython.

Executer du code au démarrage

N’importe quelle ligne de code Python ou de commande magique (les trucs qui commencent pas ‘%’ qui ne fonctionnent que dans iPython) !

Très utile pour les imports par exemple. Voici ce que je fais moi au démarrage :

c.TerminalIPythonApp.exec_lines = [
'%doctest_mode',
'import os, sys, re, json',
'from datetime import datetime, timedelta',
'''
try:
    from path import path
except ImportError:
    pass
''',
'''
try:
    import requests
except ImportError:
    pass
''',
'''
try:
    from batbelt.structs import *
    from batbelt.objects import attr
    from batbelt.strings import slugify, normalize, json_dumps, json_loads
except ImportError:
    pass
'''
]

Du coup j’ai quasiment jamais besoin d’importer un truc, car ce que j’utilise le plus est déjà là. %doctest_mode me permet de coller des docstrings sans me fouler.

Programmation graphique

iPython possède une boucle principale. Les toolkits graphiques aussi. Si vous faites vos essais du code du second dans le premier, ça va bloquer. Heureusement on peut demander à iPython d’intégrer la main loop d’un des toolkits graphiques les plus célèbres en choisissant parmi : ‘qt’, ‘wx’, ‘gtk’, ‘glut’, ‘pyglet’ et ‘osx’ et en settant :

c.TerminalIPythonApp.gui = 'qt'

Virer le header

Quand on lance le shell, il vous raconte sa vie. Pour lui dire de fermer sa gueule :

c.TerminalIPythonApp.display_banner = False

Lancer un script complet

Bon, ça c’est si vous avez de gros besoins…

c.TerminalIPythonApp.file_to_run = '/path/to/script.py'

Sauter la confirmation à la fermeture

Oui, je suis sûr te vouloir te fermer connard ! Tu crois que j’ai appuyé sur Ctrl + d par erreur en éternuant ?

c.TerminalInteractiveShell.confirm_exit = False

Choisir son éditeur externe

Si vous tapez %edit dans iPython, il ouvre un éditeur. Vous tapez votre code, vous sauvegardez, vous fermez. Et iPython récupère le code et l’éxécute. Par défault il utilise VI. On peut faire mieux.

c.TerminalInteractiveShell.editor = '/chemin/vers/sublime-text -w'

9 thoughts on “Personnalisez le démarrage d’iPython

  • François

    Ipython est vraiment génial. J’apprécie aussi la “version” disponible dans le navigateur. C’est peut être moins important pour des activités de dev classiques, mais en science, c’est très intéressant.

    Ca se lance avec ipython notebook --pylab inline
    Un serveur web est lancé. On peut créer divers notebooks (*.ipynb). L’option –pylab permet d’avoir les lib scientifiques chargées. On peut ainsi avoir par ex des tracés directement intégrés aux calculs. Il y a aussi la possibilité de mettre des commentaires, titres etc avec une syntaxe markdown très appréciable. Last but not least, ça peut s’installer sur un serveur.

  • JeromeJ

    C’est vrai qu’en ce qui concerne certaines confirmation d’action (en outre de fermeture), j’en bénis certaine, j’en maudis beaucoup d’autre :D

    Mais oui bordel que je veux te fermer ><

    Je connaissais pas ipython sinon :) merci.

  • Sam Post author

    @François: c’est aussi très utile pour enseigner le Python. Notament, on peut voir le notebook de plusieurs élèves à distance.

  • Recher

    Ah d’accord, c’est “IPython”, et non pas “iPython”.

    Je connaissais pas du tout, avant d’avoir lu l’article. Du coup je me suis dit :
    “C’est un iTruc, ça vient forcément de chez Apple. C’est peut-être un interpréteur python pour iPhone ? La fenêtre de console aura des bords ronds, et chaque ligne de code qu’on tape dedans devra être préalablement validée par l’App Store, dans un délai de deux semaines. Attention de ne pas nommer vos variables ‘nichons’, ‘terroriste’, ou ‘vive_les_PC’, il y a un filtrage automatique.”

    Mais en fait non, rien à voir. C’est dommage, j’aurais aimé voir ça.

  • Kontre

    Dans le genre, il y a aussi Reinteract (http://www.reinteract.org/) qui permet d’avoir un fonctionnement un peu comme Maple : on peut modifier une commande lancée précédemment et actualiser les calculs suivants. Ça donne une session très interactive.

  • Sam Post author

    @lemeteore: c’est comme iPython, en plus léger. Il fait moins de truc, il est moins lourd.

    @kontre: iPython permet de le faire depuis la version 0.11. Il faut installer ipython-qt et le lancer avec l’option ‘-qt’ et ‘-pylab’. On se retrouve avec un killer de mapple, matlap et aux trucs du genre.

  • François

    @Sam: Vrai. Je n’ai malheureusement pas la possibilité d’enseigner en python, mais dans quelques années j’espère. :)

    @kontre : peut être que sage math peut t’intéresser. Mais ipython avec les bonnes lib fait aussi l’affaire amha.

  • Reverchon

    @SAM :

    ipython notebook -qt –pylab inline :

    -qt n’est pas reconnu !

    –pylab l’est parfaitement .

    Je code en python 3.4 sur ubuntu 14.02 LTS .

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.