Guide détaillé, étape par étape
Le TD ouvre un même notebook, altitudes.ipynb, de trois
façons : dans le navigateur, sans rien installer ; dans l’éditeur de
code, VS Code ; dans JupyterLab, lancé depuis Anaconda Navigator. Aucune
des trois façons ne demande de créer un fichier ou un environnement. Le
notebook reprend le programme du TD 1c, qui calcule la moyenne de trois
altitudes, découpé en cellules. La dernière étape fait constater ce que
le noyau retient d’une cellule à l’autre. Le TD dure une douzaine de
minutes.
Le TD nécessite un navigateur, VS Code configuré au TD 1c, et Anaconda Navigator.
| Étape | Objectif | Ce qu’on fait |
|---|---|---|
| 1 | exécuter un notebook sans rien installer | ouvrir le notebook dans le navigateur |
| 2 | exécuter un notebook dans un IDE | ouvrir le notebook dans l’éditeur |
| 3 | exécuter un notebook dans JupyterLab | ouvrir le notebook depuis Anaconda Navigator |
| 4 | relire l’état du noyau d’une cellule à l’autre | relancer une cellule, et lire ce que le noyau retient |
Ce que chaque étape fait constater est expliqué à la fin du guide, dans « Ce que le TD fait constater » : faire l’étape d’abord, et noter ce qu’on observe, avant de lire l’explication.
À faire : ouvrir la page jupyter.org/try-jupyter ; y déposer
altitudes.ipynb; exécuter ses cellules.À obtenir : le notebook ouvert dans un onglet du navigateur, et les sorties de ses cellules.
Le dossier info01\cours1\1g_notebooks\ contient le
notebook, la feuille du TD et un README.md. Il n’a pas de
dossier depart\ : le notebook est ouvert à son emplacement,
sans copie préalable.
1g_notebooks\
├── altitudes.ipynb le notebook du TD
├── td_1g_notebooks.pdf la feuille du TD
└── README.md
altitudes.ipynb contient neuf cellules : cinq blocs de
texte et quatre cellules de code. Les cellules de code n’ont pas encore
de sortie.
info01\cours1\1g_notebooks\, puis faire glisser
altitudes.ipynb dans le panneau de gauche de la page, celui
qui liste les fichiers. Le bouton en forme de flèche vers le haut,
au-dessus de ce panneau, dépose le fichier de la même façon, en passant
par une fenêtre d’ouverture de fichier.altitudes.ipynb dans le panneau. Si
la page demande de choisir un noyau, prendre celui qui est proposé,
Python (Pyodide).Maj + Entrée : la cellule s’exécute, sa sortie
s’affiche dessous, et la cellule suivante est sélectionnée. Continuer
jusqu’à la fin du notebook. La première exécution prend quelques
secondes.Si le réseau de la salle est lent, l’enseignant montre cette étape au tableau : passer à l’étape 2.
À noter : ce qu’il a fallu créer ou installer pour exécuter le code, et où le calcul se fait.
À faire : ouvrir
altitudes.ipynbdans VS Code ; choisir le noyaubased’Anaconda ; exécuter les cellules.À obtenir : les quatre cellules de code exécutées, chacune avec son numéro entre crochets.
Lancer VS Code, puis menu File, Open Folder (Fichier, Ouvrir le
dossier), et choisir Bureau\info01\cours1\1g_notebooks.
Dans le panneau Explorer, à gauche, cliquer sur
altitudes.ipynb.
Le notebook s’ouvre en cellules, avec une barre d’outils en haut.
Ouvrir un .ipynb nécessite l’extension Jupyter de
Microsoft, d’identifiant ms-toolsai.jupyter, la troisième
du module après l’extension Python (TD 1c) et l’extension C++ (TD 1e).
Si elle n’a pas été installée avec les réglages du TD 1c, VS Code la
propose à l’ouverture du fichier : accepter. Si VS Code ne la propose
pas, l’installer depuis le panneau Extensions (Ctrl +
Maj + X), en tapant son identifiant.
base,
dont le chemin est
C:\ProgramData\anaconda3\python.exe.Ce que VS Code appelle « noyau » est l’interpréteur Python qui exécute les cellules. Choisir celui d’Anaconda ; le TD 1i explique pourquoi ce choix est nécessaire. Le nom du noyau choisi s’affiche ensuite à la place de « Select Kernel ».
Cliquer dans la première cellule de code, puis Maj +
Entrée, comme dans le navigateur. Exécuter ainsi les quatre
cellules, dans l’ordre. Le bouton « Run All » de la barre d’outils les
exécute toutes d’un coup.
Un bloc de texte s’affiche mis en forme. Un double-clic dessus montre
le Markdown qu’il contient, celui du TD 1f ; Maj +
Entrée affiche de nouveau le texte mis en forme.
Vérification : chaque cellule de code a un numéro à
gauche, [1] à [4], et la cellule de la somme
affiche trois valeurs.
À noter : ce qu’affiche la cellule des données, qui
n’appelle pas print.
À faire : lancer JupyterLab depuis la page d’accueil de Navigator ; ouvrir
altitudes.ipynbdans son arborescence ; exécuter les cellules.À obtenir : le notebook ouvert dans un onglet du navigateur, cette fois fourni par un serveur qui s’exécute sur le poste.
anaconda navigator, Entrée, puis
attendre la page d’accueil, qui a une fiche par application. En haut, la
liste des environnements indique base (root).localhost:8888/lab. La fenêtre noire doit rester
ouverte.Desktop, info01, cours1,
1g_notebooks.altitudes.ipynb, puis exécuter les
cellules par Maj + Entrée.Le fichier est le même qu’à l’étape 2 : s’il a été enregistré dans VS Code avec ses sorties, JupyterLab les affiche à l’ouverture. Le nom du noyau s’affiche en haut à droite du notebook.
À noter : l’adresse de l’onglet, et ce qu’elle indique sur la machine qui fournit le notebook au navigateur.
Garder JupyterLab ouvert pour l’étape 4.
À faire : relancer la cellule de la somme ; lire
total; puis relancer la somme sans remettretotalà zéro ; redémarrer le noyau et tout exécuter.À obtenir : les cellules de nouveau exécutées dans l’ordre, numérotées
[1]à[4].
L’étape se fait dans JupyterLab, dont les menus sont cités ici ; dans VS Code, les mêmes commandes sont dans la barre d’outils du notebook.
Le notebook se termine par la section « Ce que le noyau retient » :
une cellule qui ne contient que total, et une consigne.
total = 0, et taper Maj +
Entrée.total, et taper
Maj + Entrée.À noter : le numéro entre crochets de chaque cellule
après ces deux exécutions ; la valeur de total.
La première ligne de la cellule de la somme, total = 0,
remet la variable à zéro chaque fois que la cellule s’exécute. Le texte
du notebook, au-dessus de la cellule total, annonce que
relancer la somme ajoute une seconde fois les trois altitudes : cette
seconde addition ne se produit que si la cellule ne contient pas cette
ligne. Pour voir ce que le noyau retient d’une exécution à l’autre, la
retirer le temps d’un essai :
total = 0.Maj +
Entrée, puis la dernière cellule, total.total = 0 en tête de la cellule, à
l’identique.À noter : les trois valeurs affichées par la cellule
de la somme, et la valeur de total.
Menu Kernel, « Restart Kernel and Run All Cells… », puis confirmer par Restart. Dans VS Code : bouton « Restart » de la barre d’outils, puis « Run All ».
Vérification : les cellules sont numérotées
[1] à [4] dans l’ordre de la page, et
total vaut 387.0.
Pour finir, dans JupyterLab : menu File, Shut Down. La fenêtre noire se ferme ; fermer ensuite l’onglet.
Cette section se lit après avoir fait les étapes.
| Où l’on ouvre le notebook | Ce qu’il a fallu faire | Ce qu’on constate |
|---|---|---|
| Dans le navigateur | ouvrir jupyter.org/try-jupyter, y déposer le fichier | aucun compte, aucune installation, le calcul se fait sur votre ordinateur |
| Dans l’éditeur | ouvrir le .ipynb, installer l’extension proposée,
prendre l’interpréteur d’Anaconda |
les cellules s’exécutent par Maj +
Entrée |
| Depuis Anaconda | page d’accueil de Navigator, fiche JupyterLab, Launch | un onglet de navigateur, et le fichier dans l’arborescence |
Les trois logiciels ouvrent le même fichier, et l’exécutent de la même façon. Ce qui change de l’un à l’autre est l’endroit où s’exécute le noyau, le programme qui exécute les cellules :
localhost:8888
désigne le port 8888 de la machine même. L’onglet du navigateur affiche
le notebook, sans exécuter le code.Aucune des trois façons n’a nécessité de créer un environnement : les
postes de la salle ont la distribution Anaconda, qui installe JupyterLab
et ipykernel, le paquet dont VS Code a besoin pour exécuter
un notebook, dans base. Sur un ordinateur installé avec
Miniforge, base n’a ni l’un ni l’autre : c’est le premier
constat du TD 1i.
Dans le navigateur, une cellule %pip install peut
installer une bibliothèque écrite entièrement en Python. En revanche, un
code qui lance un autre programme du système par le module
subprocess, comme ffmpeg ou ImageMagick, ne fonctionne pas.
Le notebook du TD ne lance aucun autre programme.
| Cellule | Sortie |
|---|---|
| les données | [128.4, 131.0, 127.6] |
| la somme | 128.4, puis 259.4, puis
387.0 |
| la moyenne | moyenne : 129.0 m |
total |
387.0 |
La dernière expression d’une cellule s’affiche sans
print, comme dans la session interactive du TD 1c : la
cellule des données affiche la liste, et la dernière cellule la valeur
de total. Les trois valeurs de la somme sont celles que le
débogueur montrait dans le panneau Variables au TD 1c.
Le bloc de texte de la moyenne contient une formule écrite en LaTeX, entre dollars, que le notebook affiche mise en forme. La formule et le code expriment le même calcul sur la même page, l’une pour être lue, l’autre pour être exécutée.
Le numéro entre crochets donne l’ordre d’exécution ; il ne dépend pas
de la place de la cellule dans la page. Après la première relance de
l’étape 4, la cellule de la somme porte [5] et la dernière
[6], alors que la moyenne garde [3]. Un
notebook dont les numéros ne se suivent pas a été exécuté dans le
désordre.
La dernière cellule affiche total sans le recalculer :
la variable a été créée par une autre cellule, et le noyau la conserve
en mémoire entre deux exécutions. Relancer la cellule de la somme telle
qu’elle est écrite redonne 387.0, parce que sa première
ligne, total = 0, remet la variable à zéro.
Sans cette ligne, la somme part de la valeur de total
conservée par le noyau, et ajoute une seconde fois les trois altitudes :
elle affiche 515.4, 646.4 puis
774.0, et total vaut 774.0. La
cellule de la moyenne, qui n’a pas été relancée, affiche encore
129.0 m : la page montre alors des résultats qui ne
correspondent plus entre eux.
Redémarrer le noyau efface toutes les variables ; le texte des
cellules reste, et « Run All » les exécute de nouveau dans l’ordre de la
page. Le redémarrage suivi de « Run All » remet ainsi le notebook dans
un état cohérent. Sans la ligne total = 0, cette
réexécution échouerait sur la cellule de la somme, avec une erreur
NameError : après le redémarrage, total
n’existe plus.
.ipynbUn .ipynb est un fichier texte au format JSON. Ouvert
dans le Bloc-notes, il montre chaque cellule avec son type et ses lignes
:
"cell_type": "code",
…
"source": [
"altitudes = [128.4, 131.0, 127.6]\n",
"altitudes"
]
Les sorties y sont enregistrées avec le code, une fois le notebook
exécuté puis enregistré : rouvert, il affiche encore les résultats de la
dernière exécution. Le notebook du TD a été écrit dans un autre format
de notebook, MyST Markdown, du Markdown dont les cellules de code sont
des blocs, puis converti en .ipynb.