Intégration de Jupyter

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) :

Au passage il faut vérifier les variables d’environnement, car il se passe des choses :

(prod) C:\Local>conda deactivate
C:\Local>conda activate jupyterprod
C:\Local>set OLD_BABEL_DATADIR=C:\Local\OpenBabel-3.1.1\data
C:\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

Retour en haut