Intégrer le kernel sagemath à jupyterhub

Par défaut, lorsque l’on installe The Littlest JupyterHub, le kernel par défaut est un environnement Anaconda. Nous allons voir comment rajouter le kernel de Sagemath.

L’avantage d’avoir cet environnement est la facilité d’installer des outils à jours et cohérents, grâce à l’écosystème fourni pour Anaconda. Sagemath 9 enfin compatible avec la version 3 de python, le plus simple pour l’installer est d’utiliser anaconda lui-même.

Ouvrez une console via l’interface admin de votre jupyterhub, et écrivez les commandes suivantes:

sudo -E conda install mamba -c conda-forge
sudo -E mamba create -n sage sage -c conda-forge

Cela crée un environnement sage indépendant de celui par défaut (vous aurez donc deux kernels, un python3 utilisant l’environnement par défaut de conda, et l’autre sagemath).

Sagemath vient avec un kernel déjà configuré, reste à le rendre visible dans l’interface.

  1. On se rend là où sont situés les kernels

          cd /opt/tljh/user/share/jupyter/kernels
    

    Par défaut, seul python3 est présent.

  2. On copie le kernel fourni par sage dans le répertoire courant.

          sudo -E cp -R /opt/tljh/user/envs/sage/share/jupyter/kernels/sagemath .
    

    Si on regarde le fichier kernel.json s’y trouvant, on remarque qu’il exécute le programme /opt/tljh/user/envs/sage/bin/sage.

  3. Pour l’exécuter, il faut y ajouter des variables d’environnement requises par sage pour fonctionner, ce que l’on ajoute au fichier kernel.json via la clé env. On obtient le fichier suivant:

          {
              "argv": [
                  "/opt/tljh/user/envs/sage/bin/sage",
                  "--python",
                  "-m",
                  "sage.repl.ipython_kernel",
                  "-f",
                  "{connection_file}"
              ],
              "display_name": "SageMath 9.0",
              "language": "sage",
              "env": {
                  "SAGE_ROOT": "/opt/tljh/user/envs/sage",
                  "SAGE_LOCAL": "/opt/tljh/user/envs/sage"
              }
          }
    

    On peut vérifier que le kernel apparaît bien ensuite.