PE – Python numérique – Annexe : le cours sur votre machine

Le cours sur votre machine đź§°

git + JupyterLab : récupérer le cours, le lancer, le mettre à jour

Annexe · à faire une fois, puis un git pull avant chaque séance

Raphael Prasquier · cours d'Aurélien Noce – UE12 Python numérique

PE – Python numérique – Annexe : le cours sur votre machine

Pourquoi ne pas se contenter du site ? 🎯

Les notebooks du cours se lisent sur https://numerique.info-mines.paris, et c'est
très bien pour jeter un œil à une notion.

Cependant, pour apprendre, il faut les exécuter : changer un paramètre, casser
un exemple pour comprendre pourquoi il marchait. Il faut donc les avoir chez vous.

De plus, le cours évolue au fil du semestre : les collègues corrigent et
complètent les notebooks jusqu'à la veille. D'où le plan de cette annexe :

  1. récupérer le cours, une seule fois (git clone, un environnement conda, pip install) ;
  2. le lancer dans JupyterLab, et s'y repérer ;
  3. le mettre à jour avant chaque séance (git pull).

On suppose les installations du cours d'introduction faites :
https://intro.info-mines.paris/3-1-checklist/ les vérifie en cinq minutes.

PE – Python numérique – Annexe : le cours sur votre machine

Trois façons de faire tourner du Python

Dans le terminal (sous Windows, le terminal bash installé au cours d'introduction) :

Commande Ce qui se passe Quand
python un interpréteur interactif : on tape, ça répond tester une ligne
python fichier.py exécute le script, puis rend la main un programme fini
jupyter lab l'environnement de notebooks, dans le navigateur tout le semestre

Les commandes de ces slides sont Ă  taper dans le terminal, sans le $ que l'on
voit parfois devant : vous pouvez les copier-coller telles quelles.

PE – Python numérique – Annexe : le cours sur votre machine

Étape 1 · Récupérer le cours (une seule fois)

Le cours vit dans un dépôt git : un dossier dont git garde tout l'historique et
qu'il sait synchroniser avec sa référence sur GitHub. Le récupérer, c'est le cloner :

cd Documents          # ou le dossier oĂą vous rangez vos cours
git clone https://github.com/ue12-p26/numerique.git

Cela crée un dossier numerique, notebooks et données compris. C'est la seule fois
oĂą l'on tape cette adresse.

L'accès se fait en HTTPS : pas de compte, pas de clé à configurer, le dépôt est public
et nous ne faisons que lire.

PE – Python numérique – Annexe : le cours sur votre machine

Étape 2 · Un environnement conda pour le cours

Un environnement conda, c'est un Python et ses bibliothèques, isolés du reste de votre
machine : ce que vous installez pour ce cours ne dérangera pas vos autres projets, et
inversement. Créons-en un, nommé pe, puis activons-le :

conda create -n pe python=3.13
conda activate pe

Une fois activé, votre invite de commande commence par (pe) : c'est le signe que
python, pip et jupyter désignent désormais ceux de cet environnement.

💡 Sans environnement dédié, conda activate base fait l'affaire ; simplement, tout ira
dans le même panier. Le détail est sur https://intro.info-mines.paris/3-3-virtual-envs/.

PE – Python numérique – Annexe : le cours sur votre machine

Étape 2 (suite) · Installer les bibliothèques

Les notebooks ont besoin de numpy, pandas, matplotlib… mais aussi de jupytext, dont
nous reparlons. Tout est listé dans requirements.txt, et pip sait lire cette liste :

conda activate pe          # si ce n'est pas déjà fait : (pe) devant l'invite
cd numerique
pip install -r requirements.txt

La première fois, quelques centaines de Mo à télécharger : patientez. Relancer la commande
plus tard est sans danger, elle n'installe que ce qui manque.

⚠️ Regardez votre invite avant de taper pip. Si (pe) n'y figure pas, les
bibliothèques partent dans un autre Python que celui de vos notebooks, et l'on récolte
ensuite un ModuleNotFoundError incompréhensible. Un environnement s'active dans
chaque nouveau terminal
.

PE – Python numérique – Annexe : le cours sur votre machine

Ce que vous avez maintenant

numerique/
├── requirements.txt          la liste des bibliothèques
└── notebooks/
    ├── 0-00-intro-nb.md      les notebooks du plan…
    ├── 1-02-numpy-array-nb.md
    ├── 2-01-pandas-read-csv-nb.md
    ├── …
    └── data/                 …et leurs données

Vous remarquez que les notebooks sont des fichiers .md, et non .ipynb. En effet, le
cours est stocké en texte Markdown, plus lisible et bien plus facile à suivre avec git.
Nous verrons dans deux slides comment JupyterLab les ouvre quand mĂŞme comme des notebooks.

PE – Python numérique – Annexe : le cours sur votre machine

Étape 3 · Lancer JupyterLab

Deux choses comptent : l'environnement (celui où tout est installé) et l'endroit d'où
on lance, car le navigateur de fichiers de JupyterLab ne peut pas remonter plus haut.

conda activate pe
cd numerique
jupyter lab
  • Le terminal se remplit de messages et le navigateur s'ouvre sur http://localhost:8888/lab.
  • Ces messages sont ceux du serveur Jupyter, qui exĂ©cute votre code ; le navigateur n'est
    que la vitrine. Ne fermez pas ce terminal tant que vous travaillez.
  • Si le navigateur ne s'ouvre pas tout seul : copiez-y l'URL du terminal, celle qui finit
    par ?token=….
  • Pour arrĂŞter proprement : File → Shut Down, ou Ctrl-C dans le terminal, puis y.
PE – Python numérique – Annexe : le cours sur votre machine

Ouvrir un notebook du cours

Ă€ gauche, le navigateur de fichiers ; au centre, des onglets, dont le Launcher au
démarrage. Entrez dans notebooks/ : les fichiers .md ont une icône de notebook.

C'est l'œuvre de jupytext, installé par requirements.txt, qui fait le pont entre
Markdown et notebook. Mais attention :

  • un double-clic ouvre l'Ă©diteur de texte brut, ce n'est pas ce que nous voulons ;
  • il faut cliquer droit sur le fichier → Open With → Notebook.

💡 Les sorties (résultats, figures) d'un notebook .md ne sont pas conservées à la
fermeture, seul le code l'est. C'est normal : on ré-exécute en rouvrant.

⚠️ Si Open With ne propose pas Notebook, jupytext manque dans l'environnement qui a
lancé Jupyter : arrêtez JupyterLab, conda activate pe, pip install jupytext, relancez.

PE – Python numérique – Annexe : le cours sur votre machine

Dans un notebook : les cellules

Un notebook est une suite de cellules, de code ou de texte Markdown, exécutées une par une.

Touche Effet Usage
Shift-Entrée exécute et passe à la suivante dérouler un notebook de cours
Ctrl-Entrée exécute sans bouger relancer le même essai
Alt-Entrée exécute et insère une cellule dessous bricoler

À gauche d'une cellule de code, [3] indique qu'elle a été exécutée en troisième ;
[*] signale qu'elle tourne encore.

PE – Python numérique – Annexe : le cours sur votre machine

Deux modes, huit raccourcis

  • Mode Ă©dition (curseur dans la cellule) : on tape du code. Échap en sort.
  • Mode commande (bordure bleue, pas de curseur) : les touches deviennent des raccourcis.
    Entrée ramène en édition.
Touche Effet Touche Effet
A / B cellule au-dessus / en dessous M / Y passer en Markdown / en code
D D supprimer la cellule Z annuler la suppression
I I interrompre une cellule trop longue 0 0 redémarrer le noyau

Ces huit-lĂ  suffisent pour tout le semestre.

PE – Python numérique – Annexe : le cours sur votre machine

Le noyau se souvient de l'ordre d'exécution ⚠️

Le noyau (kernel) est le processus Python qui exécute vos cellules. Il garde tout en
mémoire : une variable définie dans une cellule reste disponible dans les suivantes.

Or il retient l'ordre d'exécution, pas l'ordre des cellules sur la page. Pouvez-vous
deviner le souci ?

Vous exécutez une cellule, vous la supprimez… et tout continue de marcher, puisque sa
variable est encore en mémoire. Le lendemain, plus rien ne fonctionne.

Le remède : Kernel → Restart Kernel and Run All Cells, qui repart d'un noyau vierge et
exécute tout dans l'ordre. C'est le geste que je vous demande avant de rendre chaque
devoir
, et le bon réflexe dès qu'un notebook se comporte bizarrement.

PE – Python numérique – Annexe : le cours sur votre machine

L'aide est à portée de main 💡

  • Tab complète un nom ; Shift-Tab affiche la signature de la fonction sous le curseur.
  • pd.read_csv? ouvre la documentation ; ?? montre le code source.

Les commandes qui commencent par % sont des magics propres Ă  Jupyter, pas du Python :

%timeit np.sin(tab)          # chronomètre une ligne, en la répétant
%%timeit                     # en tête de cellule : chronomètre toute la cellule
for x in liste:
    ...

Nous nous en servons pour comparer une boucle et sa version vectorisée.

PE – Python numérique – Annexe : le cours sur votre machine

Avant chaque séance · mettre à jour le cours

Le dépôt bouge d'une semaine à l'autre. Pour récupérer les changements, on demande à git
de tirer (pull) ce qui est nouveau depuis votre clone :

cd numerique
git pull
  • Seules les diffĂ©rences sont tĂ©lĂ©chargĂ©es ; git affiche la liste des fichiers modifiĂ©s.
  • Si requirements.txt en fait partie : conda activate pe, puis pip install -r requirements.txt.
  • Si un notebook est ouvert dans JupyterLab Ă  ce moment-lĂ , il prĂ©vient que le fichier a
    changé sur le disque : choisissez Revert, c'est la version à jour qui vous intéresse.

Je vous recommande ce git pull la veille de chaque séance, en même temps que la
vérification de vos installations.

PE – Python numérique – Annexe : le cours sur votre machine

Si git pull refuse

error: Your local changes to the following files would be overwritten by merge

En clair : vous avez modifié un notebook du cours (à chaque sauvegarde, jupytext réécrit
le .md), et git refuse d'écraser votre travail. Deux options :

Garder mes modifications Revenir Ă  la version du cours
git stash (met de côté) git restore notebooks/
git pull git pull
git stash pop (réapplique)

Laquelle choisir ? Posez-vous la question de ce que vous perdez vraiment : c'est l'objet
de la slide suivante.

PE – Python numérique – Annexe : le cours sur votre machine

OĂą garder son travail personnel ?

Le dépôt numerique n'est pas fait pour conserver un travail personnel : on y lit le
cours, on l'expérimente, on le met à jour.

  • Vos devoirs vivent dans votre propre dĂ©pĂ´t pe-homework, jamais dans numerique.
  • Vos essais sur un notebook de cours mĂ©ritent au plus une copie :
    File → Save Notebook As… avec un nom qui se termine en .ipynb.

Le dépôt du cours ignore les fichiers .ipynb : git pull ne s'en plaindra jamais,
et les sorties y sont même conservées, contrairement aux .md.

Ainsi, le plus souvent, git restore notebooks/ ne perd rien du tout.

PE – Python numérique – Annexe : le cours sur votre machine

Dépannage express 🔧

Symptôme Remède
conda: command not found miniconda n'est pas installé ou pas initialisé dans ce terminal : https://intro.info-mines.paris/3-1-checklist/
jupyter: command not found l'environnement n'est pas activé dans ce terminal : conda activate pe, l'invite doit afficher (pe)
ModuleNotFoundError: No module named 'pandas' installé dans un autre environnement : conda activate pe, pip install -r requirements.txt, relancez jupyter lab
FileNotFoundError: data/… le noyau n'est pas dans le dossier du notebook : ouvrez-le depuis le navigateur de fichiers de JupyterLab, lancé depuis numerique
le .md s'ouvre comme du texte clic droit → Open With → Notebook
le navigateur ne s'ouvre pas copiez l'URL http://localhost:8888/lab?token=… du terminal
une cellule reste sur [*] bouton ■ (Interrupt) ou I I ; au pire Kernel → Restart Kernel
git pull refuse cf. « Si git pull refuse » : git stash ou git restore notebooks/

Pour le reste : https://intro.info-mines.paris/3-2-troubleshooting/, ou dix minutes avant la séance.

PE – Python numérique – Annexe : le cours sur votre machine

Récapitulatif 📌

# une seule fois
git clone https://github.com/ue12-p26/numerique.git
conda create -n pe python=3.13
conda activate pe
cd numerique && pip install -r requirements.txt

# Ă  chaque fois (dans un nouveau terminal)
conda activate pe      # (pe) devant l'invite
cd numerique
git pull
jupyter lab            # puis clic droit → Open With → Notebook

Et avant de rendre un devoir : Kernel → Restart Kernel and Run All Cells.

Questions, blocages : raphael@imagine-app.fr, ou dix minutes avant la séance.