2. Installation et interpréteurs🔗

Avertissement

Le cours utilise Python 3.6+.

2.1. Notions d’Unix🔗

Python est un langage disponible sur de très nombreuses plateformes 1; cependant, dans le cadre de ce cours, nous supposerons être sous un système d’exploitation de la famille Unix (p.ex. Linux, Mac OS X).

Les concepts suivants sont supposés connus:

  • ligne de commande: éxécutables et options;

  • arborescence: chemin relatif ([./]...) et absolu (/...), navigation (cd);

  • gestion des fichiers (ls, rm, mv) et répertoires (mkdir);

  • gestion des éxécutables: $PATH, chmod +x;

  • gestion des processus: &, Ctrl-c, Ctrl-z + bg;

  • variables d’environnement: export, .bashrc.

Liens:

2.2. Installation🔗

Ce cours repose essentiellement sur les outils suivants:

Si vous souhaitez utiliser votre ordinateur personnel, ces logiciels peuvent être installés indépendamment, sous Linux, Windows ou MacOS. Il existe également des distributions python « clés en main », p.ex. Conda (multi-plateforme).

Installations locales

Si vous avez le contrôle entier de votre ordinateur, il peut être préférable d’utiliser le gestionnaire de paquets du système (p.ex. synaptic sur Ubuntu), avec le risque d’installer des versions un peu anciennes.

Même si vous travaillez sur un ordinateur public (p.ex. en salle Ariane) , il est relativement aisé d’installer sous votre compte les programmes ou librairies Python (p.ex. ipython) manquantes à l’aide du gestionnaire d’installation pip.

  • Vérifier la disponibilité du code sous PYthon Package Index (plus de 270 000 projets!)

  • Installer p.ex. ipython (mode single user):

    pip3 install --user ipython
    
  • Compléter votre ~/.bashrc:

    export PATH=$PATH:$HOME/.local/bin/
    export PYTHONPATH=$HOME/.local/lib/python3.6/site-packages/
    

2.3. Interpréteurs🔗

2.3.1. L’interpréteur de base python🔗

L’interpréteur du langage Python s’appelle python (ou python3 selon les installations); c’est toujours celui que l’on utilisera en mode non-intéractif pour exécuter (interpréter) un « script », c.-à-d. un ensemble de commandes regroupées dans un fichier texte (généralement avec une extension .py), p.ex.:

$ python3 code.py

Le python peut également faire office d’interpréteur interactif de commandes, mais avec peu de fonctionnalités:

$ python3
Python 3.6.11 (default, Jun 29 2020, 05:15:03)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
  • Ctrl-d pour sortir;

  • help(commande) pour obtenir l’aide d’une commande;

  • a priori, pas d’historique des commandes ni de complétion automatique.

Liens:

Note

Je ne parle pas ici d”Integrated Development Environment, surcouche logicielle à l’interpréteur de base (p.ex. spyder, pyCharm, etc.).

2.3.2. L’interpréteur avancé ipython🔗

Pour une utilisation intéractive avancée (historique, complétion automatique des commandes, introspection et aide en ligne, interface système, etc.) dans un terminal, il est préférable d’utiliser l’interpréteur évolué ipython:

$ ipython
Python 3.6.11 (default, Jun 29 2020, 05:15:03)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:
  • Ctrl-d pour sortir;

  • Tab pour la complétion automatique;

  • Haut et Bas pour le rappel des commandes;

  • %quickref pour les commandes spécifiques à ipython, notamment object? pour une aide sur un objet, object?? pour une aide plus complète (au niveau source);

  • %magic pour la liste des commandes magiques, dont

    • %run mon_script.py pour éxecuter un script dans l’interpréteur,

    • %debug pour lancer le mode débogage intéractif post-mortem,

    • %cpaste pour coller et éxecuter un code préformaté.

Liens:

2.3.3. Les interfaces jupyter🔗

Issu du développement de ipython, jupyter découple strictement le kernel 2 (le backend), en charge de l’interprétation et de l’exécution des commandes, de l’interface (le frontend), en charge de l’interaction avec l’utilisateur et le reste du monde.

2.3.3.1. Interface jupyter notebook🔗

L’interface jupyter notebook introduit la notion de notebook (fichier JSON d’extension .ipynb), accessible via une application web (utilisable depuis le navigateur) incorporant lignes de code, résultats, textes formatés, équations, figures, etc., et fournissant des outils d’édition et de conversion (HTML, LaTeX, présentation, etc.) et une documentation en ligne:

$ jupyter notebook

Cette commande initialise un kernel en arrière plan (qui peut servir plusieurs notebooks), et ouvre le notebook dashboard, à partir duquel vous pouvez créer de nouveaux notebooks ou en ouvrir d’anciens.

Interface `jupyter notebook`.

Fig. 2.1 Copie d’écran du notebook pokemon.ipynb.🔗

Liens

2.3.3.2. Interface jupyter lab🔗

L’interface JupyterLab permet une expérience encore plus intégrée, incluant des outils de développement (notebook, console ipython, explorateur de fichiers, terminal, etc.):

$ jupyter lab
Interface `jupyter lab`.

Fig. 2.2 Copie d’écran d’un Jupyter Lab, incluant le notebook canon.ipynb.🔗

Note

L’univers JupyterLab est en développement très actif, et peut être complété de nombreuses extensions (incompatibles avec les extensions notebook).

2.3.4. Interpréteurs en ligne🔗

Il existe de nombreux services en ligne (généralement sur un modèle freemium) offrant des interpréteurs de notebook dans le cloud. Cela permet de développer à distance sans se soucier des installations et mises à jour, et de travailler interactivement et de collaborer sur des notebooks partagés.

Comparatif

MyBinder

Le lien suivant permet d’ouvrir ce cours avec une interface de type jupyter via le service MyBinder:

https://mybinder.org/badge_logo.svg

Datalore

Pour le cours en distanciel, nous utiliserons le service datalore, qui permet une collaboration en temps réel.

  • Créer un compte sur https://datalore.io/,

  • Suivre le tutoriel,

  • Créer un notebook,

  • Le partager avec un collègue (p.ex. yncopin[AT]gmail[DOT]com) pour tester la collaboration en temps réel,

  • Le publier, pour tester les commentaires en ligne.

Notes de bas de page

1

Y compris maintenant sur des calculettes!

2

Pas nécessairement Python, d’où le nom de jupyter pour Julia-Python-R, les trois langages initialement supportés. Il en existe maintenant plusieurs dizaines.