3. Installation et interpréteurs🔗

Attention

Le cours se base sur les fonctionnalités de Python 3.6+.

3.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:

Note

dans le reste du cours, les commandes du terminal sont indiquées par:

$ command

Le $ correspond à l'invite du terminal, et ne fait pas partie de la commande à éxécuter!

3.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).

3.2.1. Installation simple🔗

Si vous avez le contrôle entier de votre ordinateur, il est a priori plus simple d'utiliser le gestionnaire de paquets du système (p.ex. synaptic sur Ubuntu), avec l'inconvénient majeur de devoir utiliser les versions potentiellement anciennes du système.

Même si vous travaillez sur un ordinateur public, 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.

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

    $ pip install --user ipython
    

    ou plus généralement (requirements.txt):

    $ pip install --user -r requirements.txt
    
  • Compléter alors votre ~/.bashrc (ou autre fichier de configuration du shell):

    export PATH=$PATH:$HOME/.local/bin/
    

Voir également: Installing Packages

3.2.2. Environnements virtuels🔗

Pour une installation plus aboutie de l'infrastructure Python, il est conseillé d'utiliser un environnement virtuel, qui isole entièrement votre infrastructure python de celle de la machine, et permet donc un contrôle fin des versions des différentes composantes (python, librairies, etc.).

Il existe différents niveaux et techniques de virtualisation, nous allons utiliser une virtualisation python légère basée sur le gestionnaire d'environnement conda et sa version allégée miniconda.

3.2.2.1. [mini]conda🔗

Installation locale sur linux

À adapter selon votre architecture système et la version de python:

$ wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.12.0-Linux-x86_64.sh
$ bash Miniconda3-py38_4.12.0-Linux-x86_64.sh
$ conda info

La procédure installe par défaut miniconda sous ~/miniconda3 et modifie en conséquence votre ~/.bashrc.

Commandes utiles

  • [dés]activation de l'environnement virtuel: conda [de]activate;

  • [dés]installation d'un package: conda [un]install package;

  • installation de l'ensemble des packages nécessaires regroupés dans requirements.txt: conda install --file requirements.txt.

Liens

3.2.2.2. virtualenv🔗

conda est puissant, mais a l'inconvénient d'être lourd, p.ex. de ne pas tirer profit de la version système de python (qui peut suffire si elle est suffisamment récente). Sous linux, il peut être avantageux d'utiliser un outil plus léger, virtualenv, et son interface simplifié virtualenvwrapper.

Installation

$ pip install --user virtualenvwrapper

puis inclure dans votre ~/.bashrc:

export WORKON_HOME=~/.virtualenvs
export PROJECT_HOME=~/VirtualEnv
source /path/to/virtualenvwrapper.sh

Commandes utiles

  • création de l'environnement virtuel project: mkvirtualenv project;

  • activation de l'environnement virtuel project: workon project;

  • désactivation de l'environnement virtuel: deactivate.

Attention

pour mini-conda et virtualenv, ne pas oublier d'activer l'environnement de travail dans chaque nouveau terminal si nécessaire.

3.3. Interpréteurs🔗

3.3.1. L'interpréteur de base python🔗

L'interpréteur du langage Python s'appelle python, 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.:

$ python code.py

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

$ python
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.
>>>

Commandes utiles

  • 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. pyzo, spyder, pyCharm, Eclipse-PyDev etc.).

3.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]:

Commandes utiles

  • 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é,

    • %timeit instruction pour chronométrer une instruction.

Liens:

3.3.3. Les interfaces jupyter🔗

Issu du développement de ipython, jupyter découple strictement le kernel [3] (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.

3.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`.

Figure 3.1 Copie d'écran du notebook pokemon.ipynb Jupyter Notebook.🔗

Liens

3.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`.

Figure 3.2 Copie d'écran d'un Jupyter Lab, incluant le notebook canon.ipynb Jupyter Notebook.🔗

Note

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

Note

Il existe également une interface JupyterLite tournant entièrement dans le navigateur et ne nécessitant aucune installation locale.

3.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.

Voir également: mode collaboratif de JupyterLab.

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 un cours en distanciel, nous utiliserons le service datalore, qui permet une collaboration en temps réel.

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

  • 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