Tutorial

Comment configurer Jupyter Notebook avec Python 3 sur Ubuntu 20.04 et se connecter via un tunnel SSH

PythonApplicationsUbuntu 20.04

Introduction

Jupyter Notebook est une application web open source qui vous permet de créer et de partager un code interactif, des visualisations, et plus encore. Cet outil peut être utilisé avec plusieurs langages de programmation, y compris Python, Julia, R, Haskell et Ruby. Il est souvent utilisé pour travailler avec des données, une modélisation statistique et l'apprentissage automatique.

Les Jupyter Notebooks (ou simplement « Notebooks ») sont des documents produits par l'application Jupyter Notebook qui contiennent à la fois du code informatique et des éléments de texte riches (paragraphe, équations, figures, liens, etc.) permettant de présenter et de partager des recherches reproductibles. Ils peuvent donc être un excellent outil à utiliser pour les présentations basées sur les données ou la programmation, ou comme un outil d'enseignement.

Ce tutoriel vous guidera dans la configuration de Jupyter Notebook pour qu'il s'exécute à partir d'un serveur Ubuntu 20.04, et vous montrera comment vous connecter et utiliser le notebook à partir d'une machine locale via un tunnel. À la fin de ce guide, vous serez en mesure d'exécuter du code Python 3 en utilisant Jupyter Notebook sur un serveur distant.

Conditions préalables

Afin de terminer ce guide, vous devez disposer d'une nouvelle instance de serveur Ubuntu 20.04 avec un pare-feu de base et un utilisateur non root avec des privilèges sudo configurés. Vous pouvez apprendre à paramétrer cette configuration en suivant notre tutoriel de configuration initiale du serveur.

Étape 1 — Configuration de Python

Pour commencer, nous allons installer les dépendances dont nous avons besoin pour notre environnement de programmation Python à partir des référentiels Ubuntu. Ubuntu 20.04 est préinstallé avec Python 3. Nous utiliserons le gestionnaire de paquets Python pip pour installer un peu plus tard des composants supplémentaires.

Nous devons d'abord mettre à jour l'index local du paquet apt et ensuite télécharger et installer les paquets :

  • sudo apt update

Ensuite, installez pip et les fichiers d'en-tête Python, qui sont utilisés par certaines des dépendances de Jupyter :

  • sudo apt install python3-pip python3-dev

Nous pouvons maintenant passer à la mise en place d'un environnement virtuel Python dans lequel nous allons installer Jupyter.

Étape 2 — Création d'un environnement virtuel Python pour Jupyter

Maintenant que nous avons Python 3, ses fichiers d'en-tête et pip prêts à l'emploi, nous pouvons créer un environnement virtuel Python pour gérer nos projets. Nous allons installer Jupyter dans cet environnement virtuel.

Pour ce faire, nous devons d'abord accéder à la commande virtualenv, que nous pouvons installer avec pip.

Mettez pip à niveau et installez le paquet en saisissant :

  • sudo -H pip3 install --upgrade pip
  • sudo -H pip3 install virtualenv

L'indicateur -H garantit que la politique de sécurité fixe la variable d'environnement home dans le répertoire d'accueil de l'utilisateur cible.

Une fois que virtualenv installé, nous pouvons commencer à créer notre environnement. Créez et accédez à un répertoire où nous pouvons conserver nos fichiers de projet. Nous appellerons cela my_project_dir, mais vous devez utiliser un nom qui soit significatif pour vous et pour ce sur quoi vous travaillez.

  • mkdir ~/my_project_dir
  • cd ~/my_project_dir

Dans le répertoire du projet, nous allons créer un environnement virtuel Python. Pour les besoins de ce tutoriel, nous l'appellerons my_project_env, mais vous devez lui donner un nom qui soit pertinent pour votre projet.

  • virtualenv my_project_env

Cela créera un répertoire appelé my_project_env dans votre répertoire my_project_dir. Dans ce répertoire, il installera une version locale de Python et une version locale de pip. Nous pouvons utiliser cela pour installer et configurer un environnement Python isolé pour Jupyter.

Avant d'installer Jupyter, nous devons activer l'environnement virtuel. Vous pouvez le faire en saisissant :

  • source my_project_env/bin/activate

Votre invite devrait changer pour indiquer que vous travaillez maintenant dans un environnement virtuel Python. Votre invite de commande indiquera alors quelque chose comme ceci : (my_project_env)user@host:~/my_project_dir$.

À ce stade, vous êtes prêt à installer Jupyter dans cet environnement virtuel.

Étape 3 — Installation de Jupyter

Avec votre environnement virtuel actif, installez Jupyter avec l'instance locale de pip.

Remarque : Lorsque l'environnement virtuel est activé (lorsque votre invite a (my_projet_env) qui la précède), utilisez pip au lieu de pip3, même si vous utilisez Python 3. La copie de l'environnement virtuel de l'outil est toujours appelée pip, quelle que soit la version de Python.

  • pip install jupyter

À ce stade, vous avez installé avec succès tous les logiciels nécessaires pour exécuter Jupyter. Nous pouvons maintenant démarrer le serveur Notebook.

Étape 4 — Exécution de Jupyter Notebook

Vous disposez maintenant de tout ce dont vous avez besoin pour exécuter Jupyter Notebook ! Pour qu'il s'exécute, exécutez la commande suivante :

  • jupyter notebook

Un journal des activités du Jupyter Notebook sera imprimé sur le terminal. Lorsque vous exécutez Jupyter Notebook, il tourne sur un numéro de port spécifique. Le premier Notebook que vous exécutez utilisera généralement le port 8888. Pour vérifier le numéro de port spécifique sur lequel tourne Jupyter Notebook, reportez-vous à la sortie de la commande utilisée pour le lancer :

Output
[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret [I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir [I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at: [I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 [I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser. [C 21:23:21.361 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

Si vous exécutez Jupyter Notebook sur un ordinateur local (et non sur un serveur), vous pouvez naviguer vers l'URL affichée pour vous connecter à Jupyter Notebook. Si vous exécutez Jupyter Notebook sur un serveur, vous devez vous connecter au serveur en utilisant un tunnel SSH comme indiqué dans la section suivante.

À ce stade, vous pouvez garder la connexion SSH ouverte et laisser Jupyter Notebook fonctionner, ou vous pouvez quitter l'application et la relancer une fois que vous avez configuré le tunnel SSH. Choisissons d'arrêter le processus Jupyter Notebook. Nous le relancerons une fois que le tunnel SSH sera mis en place. Pour arrêter le processus Jupyter Notebook, appuyez sur CTRL+C, saisissez Y, puis ENTER pour confirmer. La sortie suivante sera affichée :

Output
[C 21:28:28.512 NotebookApp] Shutdown confirmed [I 21:28:28.512 NotebookApp] Shutting down 0 kernels

Nous allons maintenant configurer un tunnel SSH afin de pouvoir accéder au Notebook.

Étape 5 — Connexion au serveur à l'aide du tunnel SSH

Dans cette section, nous allons montrer comment vous connecter à l'interface web de Jupyter Notebook en utilisant un tunnel SSH. Comme Jupyter Notebook fonctionne sur un port spécifique du serveur (tel que :8888, :8889 etc.), le tunnel SSH vous permet de vous connecter au port du serveur en toute sécurité.

Les deux sous-sections suivantes décrivent comment créer un tunnel SSH à partir de 1) un Mac ou Linux, ou 2) Windows. Veuillez vous référer à la sous-section correspondant à votre ordinateur local.

Tunnel SSH avec un Mac ou Linux

Si vous utilisez un ordinateur local Mac ou Linux, les étapes de création d'un tunnel SSH sont similaires à l'utilisation de SSH pour se connecter à votre serveur distant, à la différence qu'il y a des paramètres supplémentaires dans la commande ssh. Cette sous-section expliquera les paramètres supplémentaires nécessaires dans la commande ssh pour créer un tunnel avec succès.

Le tunneling SSH peut être réalisé en exécutant la commande SSH suivante dans une nouvelle fenêtre de terminal local :

  • ssh -L 8888:localhost:8888 your_server_username@your_server_ip

La commande ssh ouvre une connexion SSH, mais -L spécifie que le port donné sur l'hôte local (client) doit être transféré à l'hôte et au port donnés du côté distant (serveur). Cela signifie que tout ce qui tourne sur le deuxième numéro de port (par exemple 8888) sur le serveur apparaîtra sur le premier numéro de port (par exemple 8888) sur votre ordinateur local.

Vous pouvez éventuellement changer le port 8888 pour un port de votre choix afin d'éviter d'utiliser un port déjà utilisé par un autre processus.

server_username est votre nom d'utilisateur (par exemple sammy) sur le serveur que vous avez créé et your_server_ip est l'adresse IP de votre serveur.

Par exemple, pour le nom d'utilisateur sammy et l'adresse du serveur 203.0.113.0, la commande serait :

  • ssh -L 8888:localhost:8888 sammy@203.0.113.0

Si aucune erreur ne se produit après l'exécution de la commande ssh -L, vous pouvez passer dans votre environnement de programmation et exécuter Jupyter Notebook :

  • jupyter notebook

Vous obtiendrez une sortie avec une URL. Depuis un navigateur web sur votre machine locale, ouvrez l'interface web de Jupyter Notebook avec l'URL qui commence par http://localhost:8888. Assurez-vous que le numéro du jeton est inclus, ou entrez la chaîne du numéro du jeton lorsque vous y êtes invité à http://localhost:8888.

Tunnel SSH avec Windows et Putty

Si vous utilisez Windows, vous pouvez créer un tunnel SSH en utilisant Putty.

Tout d'abord, entrez l'URL du serveur ou l'adresse IP comme nom d'hôte, comme indiqué : :

Définissez le nom d'hôte pour le tunnel SSH

Ensuite, cliquez sur SSH en bas du volet de gauche pour développer le menu, puis cliquez sur Tunnels. Entrez le numéro de port local que vous souhaitez utiliser pour accéder à Jupyter sur votre machine locale. Choisissez 8000 ou plus pour éviter les ports utilisés par d'autres services, et définissez la destination comme localhost:8888:8888 est le numéro du port sur lequel tourne Jupyter Notebook.

Cliquez maintenant sur le bouton Ajouter, et les ports devraient apparaître dans la liste des ports transférés :

Liste des ports transférés

Enfin, cliquez sur le bouton “Open” pour vous connecter au serveur via SSH et passer les ports souhaités par le tunnel. Naviguez vers http://localhost:8000 (ou tout port que vous avez choisi) dans un navigateur web pour vous connecter à Jupyter Notebook tournant sur le serveur. Assurez-vous que le numéro du jeton est inclus, ou entrez la chaîne du numéro du jeton lorsque vous y êtes invité à http://localhost:8000.

Étape 6 — Utilisation de Jupyter Notebook

Cette section passe en revue les principes fondamentaux de l'utilisation de Jupyter Notebook. Si Jupyter Notebook n'est pas en cours d'exécution, lancez-le avec la commande jupyter notebook.

Vous devriez maintenant y être connecté à l'aide d'un navigateur web. Jupyter Notebook est un outil très puissant doté de nombreuses fonctionnalités. Cette section présente quelques fonctions de base pour vous permettre de commencer à utiliser le Notebook. Jupyter Notebook affichera tous les fichiers et dossiers du répertoire à partir duquel il est exécuté, donc lorsque vous travaillez sur un projet, assurez-vous de le démarrer à partir du répertoire du projet.

Pour créer un nouveau fichier Notebook, sélectionnez New > Python 3 dans le menu déroulant en haut à droite :

Créez un nouveau notebook Python 3

Ceci ouvrira un Notebook. Nous pouvons maintenant exécuter du code Python dans la cellule ou changer la cellule pour markdown. Par exemple, changez la première cellule pour qu'elle accepte le Markdown en cliquant sur Cell > Cell Type > Markdown dans la barre de navigation supérieure. Nous pouvons maintenant écrire des notes en utilisant Markdown et même inclure des équations écrites en LaTeX en les plaçant entre les symboles $$. Par exemple, saisissez ce qui suit dans la cellule après l'avoir modifiée pour la Markdown :

# First Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

Pour transformer le markdown en texte riche, appuyez sur les clés CTRL et ENTER. Vous devriez recevoir un résultat similaire à celui qui suit :

résultats du markdown

Vous pouvez utiliser les cellules Markdown pour prendre des notes et documenter votre code. Appliquons cette équation et imprimons le résultat. Cliquez sur la cellule du haut, ensuite appuyez simultanément sur les touches ALT et ENTER pour ajouter une cellule en dessous. Entrez le code suivant dans la nouvelle cellule.

x = 2
y = x**2
print(y)

Pour exécuter le code, appuyez sur CTRL+ENTER. Vous obtiendrez les résultats suivants :

résultats de la première équation

Vous avez maintenant la possibilité d’importer des modules et d'utiliser le Notebook comme vous le feriez avec tout autre environnement de développement Python !

Conclusion

Félicitations. Vous devriez maintenant être en mesure d'écrire du code Python reproductible et des notes dans Markdown en utilisant Jupyter Notebook. Pour obtenir une brève présentation de Jupyter Notebook à partir de l'interface, sélectionnez Help > User Interface Tour dans le menu de navigation du haut pour en savoir plus.

Maintenant, vous pouvez commencer un projet d'analyse et de visualisation de données en lisant Analyse et visualisation de données avec pandas et Jupyter Notebook en Python 3.

Creative Commons License