Version 2025-06
Licence CC–BY–NC–ND
ENVIRONNEMENT : JUPYTER
Christophe Schlick
schlick ಄ u-bordeaux • fr
Jupyter est un environnement de développement informatique qui permet de créer des notebooks, fichiers hybrides qui mélangent du texte, des données numériques ou alphanumériques, des équations, des images, des vidéos, des liens hypertexte et du code informatique. Le nom de Jupyter vient de la concaténation des trois langages de programmation qui étaient initialement disponibles dans cet environnement : Julia, Python et R. A chaque langage de programmation est associé un noyau d'exécution qui sera chargé d'interpréter le code informatique contenu dans le notebook. Le terme anglais notebook est parfois traduit par calepin, mais dans ce cours on va rester sur le terme originel, comme le font d'ailleurs la quasi-totalité des articles francophones parlant de l'environnement Jupyter.
L'environnement Jupyter fonctionne selon un mécanisme client-serveur basé sur le protocole HTTP (c'est-à-dire le protocole standard utilisé pour la transmission des pages web). Le serveur tourne en arrière-plan sur un ordinateur, et constitue le moteur de l'environnement de développement : c'est lui qui va exécuter les différents noyaux d'exécution et mettre en oeuvre les mécanismes d'accès aux ressources (système d'exploitation, système de fichiers, réseau local ou distant, etc). De son côté, le client tourne à l'intérieur d'un navigateur web et fournit une interface clavier-souris permettant à l'utilisateur de créer, éditer et exécuter des notebooks. Il existe aujourd'hui deux applications différentes pour interagir avec un serveur Jupyter :
La version JupyterNotebook correspond à l'interface initiale de l'environnement. Elle a été développée en 2015, à partir de l'application interactive IPython (créé en 2001) qui a elle-même été développée en s'inspirant des interfaces qui existaient dans les logiciels de calculs formels et numériques, tel que Maple (créé en 1982), Matlab (créé en 1984) ou Mathematica (créé en 1988)
La version JupyterLab correspond à la nouvelle interface de l'environnement, conçue de manière beaucoup plus modulaire et permettant d'inclure facilement des extensions par un mécanisme de plugins. C'est cette interface qui sera utilisée dans ce cours. A la date de rédaction de cette présentation, la version stable la plus récente de l'application est JupyterLab 4.3.5 (version sortie fin janvier 2025).
Il faut bien réaliser que Jupyter est le nom du serveur de l'environnement de développement (un processus système qui fonctionne en arrière-plan, de manière quasi-invisible), alors que JupyterLab est le nom du client (l'application web manipulée par l'utilisateur). Mais en pratique, les deux termes sont souvent utilisés de manière interchangeable, et seul le contexte de la phrase permet de savoir si on se réfère à l'environnement ou à l'interface.
La documentation complète des fonctionnalités offertes par l'application JupyterLab se trouve sur le site ReadTheDocs, mais une copie locale est directement accessible dans le menu Help
de l'application, sous le titre JupyterLab Reference
En plus de la version standard (mono-poste, mono-utilisateur) dont le processus d'installation sera décrit dans la section suivante, il existe également plusieurs versions alternatives de l'environnement Jupyter, pour lesquelles le serveur s'exécute directement en ligne. Ces versions permettent ainsi d'utiliser les interfaces JupyterNotebook ou JupyterLab, sans imposer une installation locale sur son poste de travail, puisque seul l'exécution d'un navigateur web sera nécessaire en local. On peut notamment citer les solutions gratuites suivantes :
JupyterHub est destiné à être installé sur un serveur de réseau local, et permet de définir des comptes utilisateurs pour s'y connecter depuis n'importe quel poste de ce réseau local.
Binder, développé par une communauté open-source et hébergé par OVH, fournit un environnement Jupyter en ligne, qui utilise des fichiers stockés sur n'importe quel serveur compatible avec le protocole Git (peut parfois être assez lent au démarrage)
Cloud Suite, est un service similaire à Binder, développé par Anaconda (nécessite la création d'un compte Anaconda)
Colab(oraty), est un service similaire à Binder, développée par Google (nécessite la création d'un compte Google)
Github Codespaces, est un service similaire à Binder, développé par Microsoft (nécessite la création d'un compte GitHub)
Plus récemment, de nombreuses plateformes de travail collaboratif sont apparues sur le web, fournissant l'accès à diverses ressources de traitement des données, en échange d'un abonnement mensuel. Le point commun de ces sites est qu'ils sont quasiment tous basés sur un environnement JupyterLab. Parmi les plateformes les plus réputées, on peut citer :
DeepNote ● Kaggle ● NAAS ● Datalore ● Kyso ● Datacamp ● Gradient ● Domino
A - Démarrage de l'environnement
1 - JupyterHub au CREMI¶
Parmi les ressources matérielles et logicielles fournies par le CREMI aux étudiants inscrits dans les formations des départements de Mathématiques et d'Informatique, figurent un serveur JupyterHub accessible via l'URL suivante :
Lorsque vous entrez cette URL dans un navigateur, il suffit de saisir votre login et votre mot de passe, associés à votre ENT de l'Université, pour démarrer un environnement JupyterLab qui dispose d'un accès à l'ensemble des fichiers liés à votre espace de travail au CREMI. Il faut noter que la connexion à cet environnement est parfaitement équivalente que vous la fassiez depuis un poste dans une salle du CREMI ou à partir de n'importe quel poste informatique sur la planète, à condition évidemment de disposer d'un navigateur web et d'une connexion internet. Par conséquent, c'est de très loin la solution la plus simple pour travailler dans le cadre de cette UE, surtout qu'elle offre la garantie d'avoir la version la plus récente de l'environnement Jupyter, et d'avoir accès à l'ensemble des packages Python nécessaires aux différents chapitres de cours et feuilles d'exercices.
Il est important de comprendre que la connexion au serveur JupyterHub active des processus sur votre poste personnel où s'exécute votre navigateur web, mais également sur le poste localisé au CREMI qui gère les connexions à ce hub (par défaut, il s'agit de la machine ombrage). Donc en fermant simplement l'onglet JupyterLab de votre navigateur, cela ne ferme pas les processus à votre nom qui s'exécutent sur la machine dédié au CREMI. Même s'il existe un système de timeout sur ombrage qui va automatiquement tuer tous les serveurs Jupyter qui sont inactifs depuis plus de 2 heures, il est fortement conseillé d'arrêter proprement votre serveur Jupyter avant de vous déconnecter. Cela s'effectue très simplement en lançant la commande Panneau de contrôle du Hub
du menu Fichier
de l'interface JupyterLab, puis en cliquant sur le bouton Stop my server
, avant de fermer l'onglet du navigateur.
2 - JupyterLab via Anaconda¶
Si vous souhaitez disposer d'un environnement de travail autonome sur votre poste personnel, la manière la plus simple de procéder est d'utiliser la distribution Anaconda qui fournit un écosystème complet et fonctionnel pour le développement d'applications et de notebooks à contenu scientifique. La page téléchargement du site (cliquez sur 'skip registration' pour ne pas avoir à créer un compte) fournit des installateurs pour les trois principaux systèmes d'exploitation : Windows, MacOS, Linux. La distribution proposée à ce jour inclut la version 3.12 de Python et la version 4.2.5 de JupyterLab.
La mise en oeuvre de ces installateurs ne pose pas de difficulté majeure, mais il faut savoir qu'avec ses 1500 paquetages logiciels différents, la distribution va occuper près de 5 Go sur le disque dur après installation, il est donc judicieux de faire un peu de place si votre disque est trop encombré. Voici quelques uns des paquetages installées par Anaconda, dont les plus importants seront détaillés dans les chapitres à venir de ce cours :

Le système d'exploitation ChromeOS présents sur les ordinateurs de type Chromebook n'est pas directement supporté par Anaconda. Néanmoins, ChromeOS contient un sous-système Linux (activable de manière optionnelle) qui permet l'installation d'Anaconda, comme le montre ce tutoriel.
Si vous souhaitez absolument avoir sur votre ordinateur la version de JupyterLab à la fois la plus récente et la plus légère possible, il faut commencer par installer la dernière version de l'environnement Python pour votre système d'exploitation, puis installer manuellement avec la commande pip
, les différents modules nécessaires à l'utilisation de l'environnement JupyterLab. Les étudiants souhaitant utiliser cette méthode peuvent me contacter pour avoir des informations complètes sur la mise en oeuvre de ce processus d'installation (ce n'est pas vraiment complexe, mais il y a simplement un certain nombre de commandes à écrire manuellement)
L'installation de la distribution Anaconda va créer plusieurs icones dans le gestionnaire d'applications du poste de travail. Parmi ces applications, il y a notamment :
Anaconda Navigator qui est une application graphique (cf. copie d'écran ci-dessous) permettant de lancer et configurer les différents outils fournis par Anaconda.
Anaconda Prompt qui est un interpréteur de commandes
bash
préconfiguré pour inclure les différents chemins d'accès des packages utilisés par Jupyter. Comme les systèmes Linux et MacOS incluent déjà une application Terminal permettant de lancer un interpréteurbash
, l'application Anaconda Prompt n'est installée que pour Windows

Deux options sont alors possibles pour démarrer JupyterLab :
- soit lancer Anaconda Navigator puis cliquer sur Launch dans la tuile JupyterLab
- soit lancer Anaconda Prompt (sur Windows) ou Terminal (sur Linux et MacOS) puis saisir
jupyter lab
au clavier et valider par ENTER
La seconde option est largement préférable car elle permet à la fois, un démarrage plus rapide, un impact moindre sur les ressources (CPU et RAM) du poste de travail, et l'accès aux messages d'information et d'erreurs générées par le serveur Jupyter (messages qui ne sont pas directement accessibles via Anaconda Navigator). Il faut noter que lorsque vous lancez JupyterLab via la commande jupyter lab
, la racine de l'arborescence des fichiers affichée dans la zone de gauche correspond au dossier où vous étiez, au moment de lancer la commande. Pour changer le dossier correspondant à cette racine de l'arborescence, il existe deux possibilités :
- Soit vous effectuez un
cd dossier_racine
AVANT de lancer la commandejupyter lab
- Soit vous lancez JupyterLab avec la commande
jupyter lab --notebook-dir=dossier_racine
Comme le client JupyterLab est une application web, ce processus va automatiquement démarrer un navigateur web (Chrome, Firefox, Safari, Edge, ou autre, en fonction de la configuration courante du gestionnaire d'applications) et afficher une page d'accueil qui constituera l'environnement de travail dans lequel l'utilisateur pourra éditer et exécuter ses notebooks. Cet environnement possède de nombreuses fonctionnalités qui seront détaillées dans les sections B et C de ce chapitre.
A la fin de la session de travail, il y a également deux options possibles pour arrêter JupyterLab :
- soit cliquer sur l'entrée Shut Down du menu File dans l'onglet JupyterLab de votre navigateur web (une fenêtre popup s'affichera pour demander confirmation de l'arrêt du serveur)
- soit faire un CTRL + C au clavier dans la fenêtre Anaconda Prompt ou Terminal qui a permis de lancer JupyterLab
B - Description
L'environnement JupyterHub sur les postes du CREMI et l'environnement JupyterLab sur un poste individuel, fonctionnent de manière quasiment équivalente : en arrière-plan s'exécute un serveur HTTP capable de traduire, de manière interactive, des fichiers .ipynb
(IPython NoteBook) en fichiers .html
(HyperText Markup Language) qui seront affichés par le client tournant sur le navigateur web. La seule différence est que ce serveur HTTP s'exécute sur une machine dédiée au CREMI lorsque vous vous connectez à JupyterHub, alors qu'il s'exécute sur votre poste de travail si vous lancez Anaconda.
Pour la première session de travail, la page affichée par défaut par le client, correspond à la copie d'écran ci-dessous (onglet File Browser
à gauche, onglet Launcher
à droite). Pour les sessions de travail ultérieurs, l'environnement se reconfigure automatiquement pour reproduire l'affichage que l'utilisateur avait sur son écran à la fin de la session précédente.

1 - Interface¶
L'interface est présentée ici dans sa version anglaise qui est celle que j'utilise, mais vous pouvez évidemment configurer votre environnement en version française si cela vous convient mieux, et vous n'aurez pas de difficulté à trouver les termes français de votre interface qui sont équivalents aux termes anglais utilisés dans cette présentation.
La page d'accueil affichée par JupyterLab est composée de trois zones (cf. copie d'écran ci-dessus) :
En haut : une barre de menus horizontale contenant 8 ou 9 menus déroulants
File
,Edit
,View
,Run
,Kernel
,Git
,Tabs
,Settings
,Help
(le menuGit
n'apparait pas sur Anaconda)A gauche : une barre de contrôle verticale contenant 6 ou 8 onglets activant la zone de contrôle
Property Inspector
,File Browser
,Terminals & Kernels
,IPython Parallel
Git
,Table of Contents
,Debugger
,Extension Manager
(les ongletsIPython Parallel
etGit
n'apparaissent par sur Anaconda)Au centre : une zone de travail contenant les documents actifs, chacun étant identifié par son propre onglet
(au démarrage, c'est l'ongletLauncher
qui est actif)En bas : une barre d'état présentant des informations synthétiques sur l'état courant du serveur et du notebook actif
En fait, dans la configuration par défaut, l'interface contient deux barres de contrôle : l'une à droite avec 4 onglet (sur Anaconda) ou 6 onglets (sur JupyterHub), l'autre à gauche avec 2 onglets. Pour gagner de la place sur l'écran, il est préférable de regrouper tous les onglets sur la barre de gauche : pour cela, il suffit de faire un clic droit sur chaque icône de la barre de droite et d'activer la commande Switch Sidebar Side
De même, si vous souhaitez vraiment occuper tout l'espace disponible sur l'écran du poste de travail pour travailer sur votre notebook, ce qui s'appelle le mode distraction free, on peut combiner la désactivation de la zone de contrôle à gauche, l'activation du mode simple interface qui va cacher les onglets non actifs, et l'activation mode fullscreen qui va cacher l'interface utilisateur du navigateur web pour ne garder que celle de JupyterLab :
- la zone de contrôle est activé/désactivé en cliquant sur l'onglet actif dans la barre de contrôle
- Le mode simple interface est activé/désactivé avec le switch
Simple
dans la barre d'état - le mode fullscreen est activé/désactivé par la touche F11 du clavier
2 - Manipulation des documents¶
Même s'il s'exécute dans un navigateur web, l'interface JupyterLab permet une interaction poussée avec le système d'exploitation sur lequel s'exécute le serveur Jupyter associé. L'onglet File Browser
dans la barre de contrôle fournit un explorateur de fichiers avec une interface graphique tout à fait similaire à ce qui est utilisé sur les systèmes d'exploitation classiques, qui vous permet de naviguer dans un sous-ensemble de l'arborescence des fichiers disponibles sur l'espace disque de votre environnement de travail.
Autrement dit, lorsque vous travaillez sur JupyterHub, même si vous vous connectez depuis chez vous avec votre ordinateur personnel, vous allez directement interagir avec les postes sous Linux installés au CREMI et vous aurez accès aux fichiers de votre compte utilisateur au CREMI, comme si vous étiez physiquement dans une des salles du CREMI. A l'inverse, lorsque vous travaillez sur JupyterLab via la distribution Anaconda, vous aurez accès uniquement aux fichiers de votre compte utilisateur sur votre poste personnel.
L'explorateur de fichiers intégré à JupyterLab, permet de naviguer dans l'arborescence, de renommer / copier / déplacer / supprimer des fichiers ou des dossiers, avec la souris ou via l'utilisation de raccourcis clavier. Comme d'habitude, un clic droit sur un fichier ou un dossier permet de faire apparaitre un popup présentant l'ensemble des commandes disponibles. Les commandes les plus fréquentes (New Folder
, Upload Files
, Refresh Files
et File Filter
) sont regroupés dans une mini-barre d'outils au-dessus de l'arborescence. Il faut noter que le File Browser
permet également le drag-and-drop depuis l'explorateur standard de votre poste de travail. Dans le cas de JupyterHub, cela permet de transférer très simplement des fichiers depuis votre poste personnel vers votre compte utilisateur au CREMI. Par contre, la manipulation inverse ne peut pas s'effectuer par drag-and-drop, mais par la commande Download
du menu File
L'environnement Jupyter permet de manipuler de nombreux formats de documents, soit en mode édition (edit), soit en mode visualisation (view). Par défaut, un double clic sur le nom d'un fichier dans l'onglet File Browser
, permet de l'ouvrir en mode visualisation (sauf les notebooks qui sont toujours ouverts en mode édition). Pour ouvrir ce fichier en mode édition, il faut effectuer un clic droit et choisir l'outil d'édition dans le menu Open With
qui apparait. La liste ci-dessous présente les types de documents directement utilisables avec la configuration standard de Jupyter, mais cette liste peut encore être étendue, en installant différents plugins au moyen de l'onglet Extension Manager
de la barre de contrôle :
- Notebooks :
.ipynb
(edit/view) - Textes :
.txt
(edit/view).md
(edit/view).html
(edit/view).tex
(edit/view).pdf
(view) - Données :
.csv/.tsv
(edit/view).json
(edit/view).yaml
(edit/view).xml
(edit/view)) - Images :
.svg
(edit/view).vg/.vl
(edit/view).png
(view).jpg
(view).gif
(view).bmp
(view)
Dans les chapitres ultérieurs, nous verrons comment aller au delà de la simple visualisation ou édition, en utilisant le langage Python pour effectuer des traitements complexes sur chacun de ces différents types de fichiers
3 - Notebook¶
Du point de vue de l'ordinateur, un notebook Jupyter est simplement un fichier local ou distant, au format JSON (JavaScript Object Notation). Même s'il s'agit d'un fichier JSON classique, le nom du fichier utilise une extension spécifique .ipynb
permettant d'activer automatiquement l'interprétation du notebook par le serveur Jupyter
Du point de vue de l'utilisateur, un notebook Jupyter est une page web interactive qui se compose de 2 types de cellules :
- soit des cellules de texte qui vont contenir les éléments statiques du notebook
- soit des cellules de code qui vont contenir les éléments dynamiques du notebook
Pour éditer une cellule, il suffit de la sélectionner puis modifier son contenu :
- pour une cellule de texte, la sélection s'effectue par un double clic de souris
- pour une cellule de code, la sélection s'effectue par un simple clic de souris
Pour interpréter le contenu d'une cellule (texte ou code), il faut la valider :
- soit par Control + Enter (dans ce cas, la cellule courante reste active)
- soit par Shift + Enter (dans ce cas, la cellule suivante devient active, quitte à la créer si nécessaire)
- soit par Alt + Enter (dans ce cas, une cellule suivante est systématiquement créée et devient active)
Note : Pour visualiser (voire éditer si vous êtes courageux) la structure JSON qui est "cachée" à l'intérieur de tout notebook au format
.ipynb
, il suffit d'effectuer un clic droit sur le nom du fichier dans l'ongletFile Browser
et de sélectionnerOpen With / Editor
. Cette opération permet de réaliser que, malgré sa complexité visuelle à l'écran, un notebook n'est qu'un banal fichier texte, utilisant un formalisme de description spécifique, exactement de la même manière qu'une page web sera toujours créée à partir d'un fichier texte utilisant le formalisme HTML.
4 - Barre de menu¶
- Le menu
File
permet d'ouvrir, sauvegarder ou exporter un notebook - Le menu
Edit
permet de copier, coller, supprimer, déplacer, séparer ou fusionner des cellules - Le menu
View
permet de personnaliser l'affichage du notebook ou des cellules - Le menu
Run
permet d'interpréter plusieurs cellules en séquence - Le menu
Kernel
permet d'arrêter, de relancer ou de changer d'interpréteur - Le menu
Git
permet d'interagir avec un dépôt logiciel fonctionnant sous git - Le menu
Tab
permet de naviguer entre les différents onglets de l'interface - Le menu
Settings
permet de lancer les outils de configuration de l'environnement - Le menu
Help
permet d'accéder à l'aide en ligne pour les outils disponibles
5 - Barre de contrôle¶
- L'onglet
Property Inspector
permet d'afficher les détails sur une cellule du notebook actif - L'onglet
File Browser
permet d'afficher un explorateur de fichiers classique - L'onglet
Terminal & Kernels
permet de lister et de manipuler les sessions et les onglets actifs - L'onglet
Git
permet de manipuler les commandes standard d'un dépôt logiciel sous git - L'onglet
IPython Parallel
permet de lancer un environnement d'exécution parallèle (= multi-processeurs) - L'onglet
Table of Contents
permet d'afficher l'arborescence du plan pour le notebook actif - L'onglet
Debugger
permet d'afficher l'ensemble des commandes utilisables par le débogueur - L'onglet
Extension Manager
permet d'installer ou désinstaller des plugins pour l'environnement
6 - Barre d'outils¶
Chaque notebook ouvert dans JupyterLab (identifié par un onglet dans la zone de travail) possède une barre d'outils qui regroupe les commandes les plus fréquentes utilisées lors d'une session :
- Le bouton
Save
permet de sauvegarder le notebook actif - Le bouton
Insert Cell
permet d'insérer une nouvelle cellule sous la cellule active - Le bouton
Cut Cells
permet de couper les cellules sélectionnées - Le bouton
Copy Cells
permet de copier les cellules sélectionnées - Le bouton
Paste Cells
permet de coller les cellules précédemment coupées ou copiées - Le bouton
Run Selected Cells
permet d'exécuter/interpréter les cellules sélectionnées - Le bouton
Interrupt Kernel
permet d'arrêter le noyau (en cas de blocage, notamment) - Le bouton
Restart Kernel
permet d'arrêter et de redémarrer le noyau - Le bouton
Restart and Run All
permet d'exécuter/interpréter toutes les cellules du notebook - Le sélecteur
Cell Type
permet de modifier le type de la cellule active - Le bouton
Enable/Disable Debugger
permet de lancer/arrêter le débogueur pour les cellules de code - Le sélecteur
Switch Kernel
permet de modifier le noyau d'exécution utilisé pour le notebook - Le bouton
Kernel Status
permet de visualiser l'état courant du noyau d'exécution (busy ou idle) - Le bouton
Minimap
permet d'afficher/cacher la navigation par cellules, en plus de la barre de défilement
7 - Raccourcis clavier¶
Comme pour toute application interactive basée sur une interface clavier-souris, l'utilisation des raccourcis clavier permet de gagner en efficacité lors d'une session de travail sous JupyterLab. En pratique, durant le processus de création / édition / manipulation du notebook, l'utilisateur va perpétuellement alterner entre deux modes d'interaction :
- Le mode EDIT utilisé lorsqu'on veut modifier des cellules de texte ou des cellules de code
- Le mode COMMAND utilisé lorsqu'on veut modifier la structure du notebook (insérer, supprimer, fusionner ou découper des cellules...)
Attention : les raccourcis clavier fournis par JupyterLab diffèrent selon le mode d'interaction
❖ Mode EDIT
Le mode EDIT des cellules d'un notebook se comporte comme un éditeur de texte classique, où l'utilisateur va retrouver toutes les commandes habituelles pour le déplacement du curseur, la sélection et manipulation du texte, etc. Il y a néamoins quelques raccourcis spécifiques à connaître :
- ESC = Sortie du mode EDIT et activation du mode COMMAND
- ENTER = Insertion d'une ligne avec indentation automatique
- CTRL + ENTER = Interprétation de la cellule (la cellule courante reste active)
- SHIFT + ENTER = Interprétation de la cellule (la cellule suivante devient active)
- TAB = Complétion automatique du symbole associé à la position courante du curseur (cellules de code uniquement)
- SHIFT + TAB = Affichage d'une aide concernant le symbole associé à la position courante du curseur (cellules de code)
- TAB = Indentation (2 ou 4 espaces, selon configuration) des lignes sélectionnées (cellules de code)
- SHIFT + TAB = Désindentation des lignes sélectionnées (cellules de code)
- CTRL + / = Ajouter ou enlever un commentaire pour les lignes sélectionnées (cellules de code)
❖ Mode COMMAND
Le mode COMMAND permet d'effectuer des manipulations globales sur les cellules ou sur le notebook :
- ENTER = Sortie du mode COMMAND et activation du mode EDIT
- Y = Basculer la cellule active en mode code (Y comme Python)
- M = Basculer la cellule active en mode texte (M comme Markdown)
- A = Créer une cellule au-dessus de la cellule active (Above)
- B = Créer une cellule en-dessous de la cellule active (Below)
- ↑ = Activer la cellule précédente (Prev)
- ↓ = Activer la cellule suivante (Next)
- CTRL + SHIFT + ↑ = Déplacer la cellule courante vers le haut (Move Up)
- CTRL + SHIFT + ↓ = Déplacer la cellule courante vers le haut (Move Down)
- C = Copier la cellule active (Copy)
- X = Couper la cellule active (Cut)
- V = Coller la cellule copiée/coupée en-dessous de la cellule active (Paste)
- D + D = Détruire la cellule active (Delete)
- Z = Défaire la dernière action de la cellule active (Undo)
- SHIFT + Z = Refaire la dernière action de la cellule active (Redo)
- CTRL + F = Chercher ou remplacer un motif dans le notebook (Find/Replace)
- SHIFT + L = Basculer l'affichage de la numérotation des lignes (Toggle Lines)
- PAGE DOWN ou SPACE = Afficher la page suivante du notebook(Page Down)
- PAGE UP ou SHIFT + SPACE = Afficher la page précédente du notebook (Page Up)
❖ Raccourcis généraux (valables dans les deux modes) :
- CTRL + S = Sauvegarder le notebook actif
- CTRL + SHIFT + S = Sauvegarder une copie du notebook actif
- CTRL + SHIFT + Q = Fermer le notebook actif et arrêter son noyau d'exécution
- CTRL + SHIFT + D = Basculer l'affichage des onglets
- CTRL + SHIFT + C = Ouvrir le popup de recherche de commandes
- CTRL + SHIFT + L = Ouvrir l'onglet du launcher
- CTRL + SHIFT + U = Ouvrir l'onglet des propriétés
- CTRL + SHIFT + F = Ouvrir l'onglet de l'explorateur des fichiers
- CTRL + SHIFT + B = Ouvrir l'onglet des sessions actives
- CTRL + SHIFT + K = Ouvrir l'onglet du plan du notebook
- CTRL + SHIFT + E = Ouvrir l'onglet du débogueur
- CTRL + SHIFT + X = Ouvrir l'onglet des modules et extensions
C - Contenu d'un notebook
1 - Cellules de texte¶
Comme indiqué plus haut, les cellules de texte permettent à l'utilisateur d'insérer des éléments statiques dans un notebook Jupyter, soit sous la forme de textes, de tables, d'équations, de figures, d'images, de vidéos, de liens vers des ressources locales ou distantes, etc. Par défaut, ces cellules de texte sont écrites en utilisant la syntaxe du langage Markdown qui fera l'objet d'une présentation complète dans le chapitre 2 de ce cours.
Le langage Markdown est à la fois très facile à maîtriser et parfaitement adapté pour rédiger et organiser les divers éléments multimédia constituant un notebook. Lorsqu'une mise en page plus spécifique s'avère nécessaire, l'environnement Jupyter permet de basculer temporairement vers les langages HTML ou LaTeX à l'intérieur d'une cellule de texte écrite en Markdown.
Par contre, pour des projets plus ambitieux (manuels, rapports, livres) nécessitant des fonctionnalités supplémentaires et une organisation plus complexe, il est préférable d'installer certaines extensions spécialisées de Jupyter, telles que JupyterSphinx ou JupyterBook qui permettent de créer automatiquement certains types de contenus fréquemment rencontrés dans les ouvrages scientifiques (table des matières, liste des figures, glossaire, références bibliographiques, etc)
2 - Cellules de code¶
A côté des cellules de texte, les cellules de code permettent à l'utilisateur d'insérer des éléments dynamiques dans un notebook Jupyter, sous la forme d'une série d'instructions écrites dans un langage de programmation. Ces cellules de code seront exécutés de manière interactive par le noyau d'exécution (execution kernel ou tout simplement kernel) utilisé pour le notebook courant. Par défaut, ces cellules de code sont écrites en utilisant la syntaxe du langage Python) qui fera l'objet d'une présentation complète dans le chapitre 3 de ce cours.
Le noyau d'exécution ipykernel permettant à Jupyter d'interpréter et d'exécuter les cellules de code écrites en langage Python est habituellement le seul kernel présent à l'installation de l'environnement. Néanmoins il existe aujourd'hui des noyaux d'exécution pour près d'une centaine de langages de programmation, qui peuvent donc être utilisés à l'intérieur des notebooks Jupyter. Mais il est important de comprendre qu'un tel kernel ne sert que de relais entre le contenu d'une cellule de code et un interpréteur du langage de programmation correspondant. Il faut donc systématiquement installer cet interpréteur sur son poste de travail, en plus du kernel associé, avant de pouvoir utiliser ce langage dans les notebooks Jupyter. De plus, le processus d'installation d'un kernel peut varier assez fortement d'un langage à l'autre, il est donc conseillé de bien lire la documentation associée à chaque noyau pour identifier les étapes à suivre.
3 - Commandes "magiques"¶
En plus des instructions standards du langage Python, le noyau ipykernel permet également d'utiliser des commandes dites magiques dans les cellules de code, pour obtenir des fonctionnalités avancées. Ces commandes magiques se présentent sous deux formes différentes :
- Les commandes magiques de cellules, préfixées par
%
, se placent obligatoirement en début de cellule - Les commandes magiques de lignes, préfixées par
%
, se placent n'importe où dans une cellule
La liste complète des commandes magiques est obtenue en utilisant la commande %lsmagic
. Une aide plus complète se trouve sur le site ReadTheDocs, mais une copie locale est directement accessible dans le menu Help
de JupyterLab, sous le titre IPython Reference. Les commandes magiques peuvent globalement être réparties en trois catégories :
Les commandes d'interaction avec le système d'exploitation, permettant notamment de manipuler les variables d'environnement et l'arborescence des fichiers :
%env
/%pwd
/%ls
/%cd
/%mkdir
/%rmdir
/%mv
/%cp
/%load
/%run
/ ...Les commandes de profilage, permettant de mesurer le temps d'exécution et de comparer l'efficacité de diverses implémentations d'une même fonctionnalité :
%time
/%timeit
/%prun
/ ...Les commandes de substitution de langage, permettant d'interpréter la cellule courante par un autre interpréteur que celui défini par le noyau d'exécution :
%html
/%latex
/%javascript
/%ruby
/%perl
/%bash
/%cmd
/ ...
%lsmagic # liste des commandes magiques
Available line magics: %alias %alias_magic %autoawait %autocall %automagic %autosave %bookmark %cd %clear %cls %code_wrap %colors %conda %config %connect_info %copy %ddir %debug %dhist %dirs %doctest_mode %echo %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %macro %magic %mamba %matplotlib %micromamba %mkdir %more %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %pip %popd %pprint %precision %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %ren %rep %rerun %reset %reset_selective %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode Available cell magics: %! %HTML %SVG %bash %capture %cmd %code_wrap %debug %file %html %javascript %js %latex %markdown %perl %prun %pypy %python %python2 %python3 %ruby %script %sh %svg %sx %system %time %timeit %writefile Automagic is ON, % prefix IS NOT needed for line magics.
folder = %pwd # stockage du dossier courant dans une variable Python
print('Current folder =', folder)
Current folder = D:\Users\Work\JUPYTER\OUTINFO
#%run SRC/hello
# enlever le commentaire de la ligne précédente, pour lancer l'exécution du fichier 'SRC/hello.py'
#%load SRC/hello
# enlever le commentaire de la ligne précédente, pour charger le contenu du fichier 'SRC/hello.py'
L'une des commandes magiques les plus utiles est celle permettant de lancer, à l'intérieur d'un notebook, des commandes destinées au système d'exploitation. Le langage de commande bash, initialement développé pour le système Unix puis adapté à l'ensemble des systèmes d'exploitation courants (Windows, MacOS, Linux, Android, iOS), est devenu un standard de facto parmi les outils utilisés en Sciences des Données. La commande magique %bash
permet ainsi de transformer une cellule de notebook en interpréteur bash et d'exécuter un script écrit dans ce langage. Lorsque l'instruction à exécuter en bash se réduit à une seule ligne, on peut remplacer la commande magique %bash
par un simple préfixe !
:
%bash # exécution d'un script 'bash' (= langage de commande du système)
# par exemple, lister tous les noms de fichiers '.ipynb' qui contiennent le motif 'plot'
ls *.ipynb | grep plot
06-Matplotlib.ipynb E-Matplotlib.ipynb E~Matplotlib.ipynb
# le préfixe ! est un raccourci pour %bash lorsque le script se réduit à une seule commande
!ls *.ipynb | grep plot
06-Matplotlib.ipynb E-Matplotlib.ipynb E~Matplotlib.ipynb
Parmi les utilisations très fréquentes du préfixe !
dans un notebook Jupyter, figure la vérification de la présence d'une bibliothèque Python suivie de son installation automatique lorsqu'elle est manquante. Ce processus s'effectue à l'aide du gestionnaire de packages, appelé pip, et permet ainsi de garantir que toutes les bibliothèques nécessaires à l'exécution correcte du notebook sont bien installées et reconnues par le noyau d'exécution :
# vérification de la présence du module Python 'lxml' suivie de son installation s'il est absent
!pip install lxml
Requirement already satisfied: lxml in c:\tools\python\lib\site-packages (5.3.0)
En dehors du langage bash, les commandes de substitution de langage permettent d'interpréter le contenu d'une cellule de notebook avec tous les langages pour lesquels un interpréteur a été installé dans l'environnement Jupyter. En pratique, les deux commandes de substitution les plus utilisés sont %html
pour interpréter une cellule écrite en HTML
et %latex
pour interpréter une cellule écrite en LaTeX. Les cellules de codes ci-dessous fournissent quelques exemples permettant d'illustrer le rôle de ces deux commandes magiques.
Note : Pour les cellules de code utilisant des langages de présentation comme HTML ou LaTeX, ce qui intéresse l'utilisateur la plupart du temps, c'est le résultat visuel obtenu et non le code qui a permis de générer ce résultat. Il est donc tout à fait cohérent, une fois que le code a été écrit et validé, de cacher le contenu de la cellule de code pour ne laisser visible que le résultat. Ceci s'obtient simplement en cliquant sur la barre verticale bleue à gauche de la cellule, et permet de remplacer toute la cellule de code par des points de suspension (sur lequel on pourra cliquer à nouveau, si on veut modifier ultérieurement le contenu du code)
%html
<!-- Inclusion de bloc de texte au format HTML, en utilisant la propriété 'style' pour les paramètres CSS -->
<p style="background:#06D; color:#FFF; font-size:40px; font-weight:700; text-align:center">
ABCDEFGHIJKLMNOPQRSTUVWXYZ </p>
ABCDEFGHIJKLMNOPQRSTUVWXYZ
%html
<!-- Inclusion de bloc de texte au format HTML, en utilisant la balise '<style>' et le mode 'flexbox' -->
<style>
.row {display:flex; font-size:16px; font-weight:700}
.colA {flex:66%; background:#7FA; padding:8px}
.colB {flex:33%; background:#FA7; padding:8px}
.colC {flex:99%; text-align:center; font-style:italic}
</style>
<div class=row>
<div class=colA>ABCDEFGHIJKLMNOPQRSTUVWXYZ</div>
<div class=colB>ABCDEFGHIJKLMNOPQRSTUVWXYZ</div>
</div> <div class=row>
<div class=colC>ABCDEFGHIJKLMNOPQRSTUVWXYZ</div>
</div> <div class=row>
<div class=colC>ABCDEFGHIJKLMNOPQRSTUVWXYZ</div>
<div class=colC>ABCDEFGHIJKLMNOPQRSTUVWXYZ</div>
</div> <div class=row>
<div class=colB>ABCDEFGHIJKLMNOPQRSTUVWXYZ</div>
<div class=colA>ABCDEFGHIJKLMNOPQRSTUVWXYZ</div>
</div>
%html
<!-- Inclusion de figure au format SVG, en utilisant la balise '<svg>' -->
<svg viewBox='0 0 750 250' xmlns='http://www.w3.org/2000/svg'>
<g fill='#EEE' stroke='#000' stroke-width='2'>
<rect x='25' y='25' width='700' height='200' rx='25' stroke-width='4'/>
<ellipse cx='100' cy='125' rx='50' ry='75' fill='#F00'/>
<ellipse cx='210' cy='125' rx='50' ry='75' fill='#0F0'/>
<ellipse cx='320' cy='125' rx='50' ry='75' fill='#00F'/>
<ellipse cx='430' cy='125' rx='50' ry='75' fill='#0FF'/>
<ellipse cx='540' cy='125' rx='50' ry='75' fill='#F0F'/>
<ellipse cx='650' cy='125' rx='50' ry='75' fill='#FF0'/>
</g>
</svg>
%html
<!-- Inclusion de son (lien sur fichier au format WAV, MP3, AAC ou OGG), en utilisant la balise '<audio>' -->
<audio autoplay src='IMG/beep.mp3'/>
%html
<!-- Idem en ajoutant une widget de lecture -->
<audio controls loop src='IMG/beep.ogg'/>
%html
<!-- Inclusion de vidéo (lien sur fichier au format MP4), en utilisant la balise '<video>' -->
<video width=100% height=144 autoplay loop src='IMG/noise.mp4'/>
%html
<!-- Idem en ajoutant une widget de lecture -->
<video width=100% height=144 controls src='IMG/noise.mp4'/>
%html
<!-- Inclusion de vidéo (lien sur une page YouTube), en utilisant la balise '<iframe>' -->
<iframe width=100% height=360 frameborder=0 allowfullscreen src='https://www.youtube.com/embed/A5YyoCKxEOU'/>
%html
<!-- Inclusion de site web complet, en utilisant la balise '<iframe>' -->
<iframe width=100% height=360 frameborder=0 src='https://www.wikipedia.org'/>
%latex # inclusion de bloc d'équations, en utilisant la syntaxe LaTeX
\begin{align}
e^{\,i\pi} + 1 & = 0 && \textrm{(identité d'Euler)} \\
F(\omega) & = \int_{-\infty}^{+\infty} f(t)\, e^{-2\pi i\, \omega t}\, dt && \textrm{(transformée de Fourier continue)} \\
S_m & = \sum_{n\,=\,0}^{N-1} s_n\, e^{-2\pi i\frac{m\,n}{N}} && \textrm{(transformée de Fourier discrète)}
\end{align}
Remarque importante : Les deux langages de présentation HTML+CSS et LaTeX sont des outils importants pour le travail quotidien lorsqu'on travaille dans le domaine des Sciences des Données. Si vous n'avez pas eu de formation sur ces éléments durant votre cursus universitaire, il est fortement conseillé de suivre une auto-formation (même succinte) pour en maîtriser les éléments de base. Voici quelques pointeurs sur des tutos en ligne ou des mémos à télécharger, plutôt bien faits :
Tutos et Mémos HTML : W3schools ● MDN Web ● Tutorial Points ● Mémo par Olivier Dommange
Tutos et Mémos CSS : W3schools ● MDN Web ● Tutorial Points ● Mémo par Olivier Dommange
Tutos et Mémos LaTeX : Overleaf ● latex-tutorial ● Tuto par Serge Varette ● Mémo par Winston Chang