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:
Python 3.6+ (inclus l'interpréteur de base et la bibliothèque standard);
les dépendances suivantes (
requirements.txt
):les bibliothèques scientifiques Numpy et Scipy,
la bibliothèque graphique Matplotlib,
un interpréteur interactif évolué, p.ex. ipython et/ou jupyter,
éventuellement quelques librairies techniques si nécessaire (
pandas
,astropy
, etc.);
un éditeur de texte évolué, p.ex. emacs, vi, gedit, VS Codium ou tout autre ayant votre préférence [2].
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
documentation interpréteur de base
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, notammentobject?
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.
Liens
nbviewer, visualiseur en ligne de notebook (non interactif, voir ci-dessous pour des interpréteurs en ligne);
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
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:
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