Je ne suis pas utilisateur de la console interactive Python et je préfère un vrai IDE à un notebook comme Jupyter, mais il était intéressant de voir comment il pouvait être intégré dans une installation standard. D’autre part, c’est une application web qui ajoute de la lourdeur si nous ne sommes pas dans le cadre d’un travail collaboratif. Qui dit application client-serveur pose des questions liées à la sécurité, et finalement je préfère rédiger de la documentation (soit dans le code, soit sous forme d’un rapport ou d’un article) plutôt que de la livrer dans un notebook interactif. Il y a beaucoup d’autres questions (type avantages inconvénients) autour de Jupyter, mais ici le but est de faire une installation et non de discuter sur l’outil et son utilisation.
Article mis à jour en Janvier 2025.
Navigation dans le guide
Guide [ Installation de Python sous Win-x64 ]
1. Installation
Contrairement à Anaconda, avec Miniconda, Jupyter n’est pas installé, donc il faut le faire :
(base) conda install jupyter |
On s’en doutait, mais on se rends compte que Jupyter installe beaucoup de choses, même dans un environnement (prod) :
anyio, argon2-cffi, argon2-cffi-bindings, asttokens, async-lru, babel, bleach, comm, debugpy, decorator, defusedxml, executing, ipykernel, ipython, ipywidgets, jedi, jinja2, json5, jupyter, jupyter-lsp, jupyter_client, jupyter_console, jupyter_core, jupyter_events, jupyter_server, jupyter_server_terminals, jupyterlab, jupyterlab_pygments, jupyterlab_server, jupyterlab_widgets, libsodium, markupsafe, matplotlib-inline, mistune, nbclient, nbconvert, nbformat, nest-asyncio, notebook, notebook-shim, overrides, pandocfilters, parso, prometheus_client, prompt-toolkit, prompt_toolkit, psutil, pure_eval, python-fastjsonschema, python-json-logger, pywinpty, pyyaml, pyzmq, qtconsole, qtpy, rfc3339-validator, rfc3986-validator, send2trash, sniffio, stack_data, terminado, tinycss2, traitlets, wcwidth, webencodings, websocket-client, widgetsnbextension, winpty, yaml, zeromq |
Vu l’avalanche, il vaut mieux l’installer dans un environnement à part, par exemple (jupyter-prod) à partir de (prod) ou (jupyter-base) à partir de (base) :
|
1 2 3 4 5 6 7 8 |
# suppression de l'environnement cible (éventuellement) conda env list conda env remove --name jupyterprod # creation par clonage conda create --name jupyterprod --clone prod # activation conda deactivate conda activate jupyterprod |
Au passage il faut vérifier les variables d’environnement, car il se passe des choses :
(prod) C:\Local>conda deactivateC:\Local>conda activate jupyterprodC:\Local>set OLD_BABEL_DATADIR=C:\Local\OpenBabel-3.1.1\dataC:\Local>set BABEL_DATADIR=C:\Python3\envs\jupyterprod\share\openbabel(jupyterprod) C:\Local> |
En utilisant la commande set du DOS on verifie que les variables d’environnement sont toujours là, on peut aussi tester des commandes linux comme ll ou des programmes obgui, xscore, mvd … pour vérifier que les chemins d’accès ont été bien reportés.
Une fois cela fait, on peut installer Jupyter (le clonage et l’installation sont assez rapides).
2. Utilisation
On lance le notebook avec la commande jupyter notebook (ou jupyter notebook nom_du_notebook.ipynb) qui lance une instance du navigateur par défaut avec l’adresse [ http://localhost:8888/tree ], par exemple :
(jupyterprod) C:\Local>jupyter notebook[I 2024-06-14 14:18:28.954 ServerApp] Package notebook took 0.0001s to import[I 2024-06-14 14:18:29.133 ServerApp] Package jupyter_lsp took 0.1772s to import... To access the server, open this file in a browser: file:///C:/Users/Cob/AppData/Roaming/jupyter/runtime/jpserver-15480-open.html Or copy and paste one of these URLs: http://localhost:8888/tree?token=8b1866c5d75df5d84fe330a56a440530b2069b1c496ba6a7 http://127.0.0.1:8888/tree?token=8b1866c5d75df5d84fe330a56a440530b2069b1c496ba6a7[I 2024-06-14 14:18:33.946 ServerApp] Skipped non-installed server(s): bash-language-server, dockerfile-language-server-nodejs, javascript-typescript-langserver, jedi-language-server, julia-language-server, pyright, python-language-server, python-lsp-server, r-languageserver, sql-language-server, texlab, typescript-language-server, unified-language-server, vscode-css-languageserver-bin, vscode-html-languageserver-bin, vscode-json-languageserver-bin, yaml-language-server...CRTL-C => [I 2024-06-14 14:20:13.504 ServerApp] Interrupted... |
A savoir: jupyter n’ajoute pas un processus, donc il vaut mieux utiliser une autre console si on veut garder le shell pour lancer des commandes. Après une session jupyter, les variables d’environnement sont grillées: il faut désactiver l’environnement + setvars + relancer l’environnement.
Pour utiliser jupyter, il faut créer un notebook avec le bon noyau de Python (python3) puis emplir des cellules avec du code, puis sélectionner les cellules et exécuter le code, le résultat s’affichera en dessous s’il n’y a pas d’erreurs (sinon dans la console qui a lancé jupyter).
Pour ajouter du texte, il faut créer une cellule et changer son type, en tapant ESC-M sur la cellule (les crochets disparaissent). Puis on rentre le texte, on peut utiliser la syntaxe MarkDown.
Le Notebook peut être sauvé et rappelé ensuite, par exemple openbabel_test.ipynb dans c:\Dev\tests-buildez\test_openbabel. On peut faire exécuter tout un notebook, normalement le texte et les images doivent rester inertes. Voyons avec un exemple qui charge un fichier SDF de 71 molécules, et qui calcule pour chacune d’elle la masse moléculaire :
![]() |
Voila donc pour les quelques fondamentaux nécessaires pour démarrer une session jupyter en environnement (base) ou (prod) avec des bibliothèques métier qui nécessitent un environnement dédié.
Liens et lectures
- Jupyter Notebook [ https://jupyter.org/ ].
- Jupyter (Wikipedia) [ https://fr.wikipedia.org/wiki/Jupyter ].
- How To Install Jupyter Notebook on Mac and Windows [ https://www.codecademy.com/article/setting-up-jupyter-notebook ].
- How to Use Jupyter notebooks [ https://www.codecademy.com/article/how-to-use-jupyter-notebooks ].
- Markdown guide [ https://www.markdownguide.org/basic-syntax/ ].
