Tutorial

Einrichten von Jupyter Notebook mit Python 3 unter Ubuntu 20.04 und Connect über SSH Tunneling

PythonApplicationsUbuntu 20.04

Einführung

Jupyter Notebook ist eine Open-Source Webanwendung, um internaktiven Code, Visualisierungen und mehr zu erstellen und zu teilen. Dieses Tool kann mit verschiedenen Programmiersprachen genutzt werden, einschließlich Python, Julia, R, Haskell und Ruby. Er wird oft für das Arbeiten mit Daten, statistisches Modeling und Machine Learning genutzt.

Jupyter Notebooks (oder kurz: „Notebooks“) werden durch die Jupyter App produziert, die sowohl Computercode als auch erweiterte Textelemente (Absätze, Gleichungen, Zahlen, Links, etc.) enthalten, die die Darstellung und Freigabe reproduzierbarer Ergebnisse unterstützen. Sie sind somit ein ausgezeichnetes Tool für datenbasierte oder programmbasierte Präsentationen oder als Lernwerkzeug.

In diesem Tutorial befassen wir uns mit der Einrichtung von Jupyter Notebook auf einem Ubuntu 20.04-Server und zeigen, wie das Notebook via Tunnelling von einer lokalen Maschine verbunden und genutzt wird. Am Ende dieses Leitfadens können Sie Python 3 Code mit Jupyter Notebook auf einem Remote-Server ausführen.

Voraussetzungen

Um diesen Leitfaden erfolgreich zu absolvieren, sollten Sie eine neue Ubuntu 20.04-Serverinstanz mit einer einfachen Firewall und einem Nicht-root-Benutzer mit sudo-Berechtigungen konfiguriert haben. In unserem Leitfaden zur Ersteinrichtung des Servers erfahren Sie, wie Sie die Einrichtung vornehmen.

Schritt 1 — Einrichten von Python

Wir beginnen damit, die Abhängigkeiten zu installieren, die wir für unsere Python-Programmierung aus den Ubuntu Repositorys benötigen. Ubuntu 20.04 hat Python 3 vorinstalliert. Wir nutzen den Python Paketmanager pip, um später zusätzliche Komponenten zu installieren.

Wir müssen zuerst den lokalen Paketindex apt aktualisieren und die Pakete herunterladen und installieren:

  • sudo apt update

Installieren Sie als Nächstes pip und die Python Header-Dateien, die von einigen der Jupyter-Abhängigkeiten genutzt werden:

  • sudo apt install python3-pip python3-dev

Wir können nun mit der Einrichtung einer virtuellen Python-Umgebung fortfahren, in die wir Jupyter installieren.

Schritt 2 — Erstellen einer virtuellen Python-Umgebung für Jupyter

Nachdem wir nun Python 3 und seine Header-Dateien haben und pip bereit ist, können wir eine virtuelle Python-Umgebung erstellen, um unsere Projekte zu verwalten. Wir wollen Jupyter in diese virtuelle Umgebung installieren.

Dazu benötigen wir zunächst Zugriff auf den Befehl virtualenv, den wir mit pip installieren können.

Upgraden Sie pip und installieren Sie den Paket, indem Sie Folgendes eingeben:

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

Das Flag -H stellt sicher, dass die Sicherheitsrichtlinie die home-Umgebungsvariable im Home-Verzeichnis des Zielbenutzers festlegt.

Wenn virtualenv installiert ist, können wir mit der Erstellung unserer Umgebung beginnen. Erstellen und wechseln Sie in ein Verzeichnis, in dem wir unsere Projektdateien speichern können. Wir nennen es my_project_dir. Sie sollten jedoch einen Namen verwenden, der für Sie und das, woran Sie arbeiten, aussagekräftig ist.

  • mkdir ~/my_project_dir
  • cd ~/my_project_dir

Innerhalb des Projektverzeichnisses erstellen wir eine virtuelle Python-Umgebung. Für den Zweck dieses Tutorials werden wir sie my_project_env nennen, aber Sie sollten sie so benennen, wie es für Ihr Projekt relevant ist.

  • virtualenv my_project_env

Auf diese Weise wird ein Verzeichnis mit dem Namen my_project_env in Ihrem Verzeichnis my_project_dir erstellt. Darin wird eine lokale Version von Python und eine lokale Version von pip installiert. Wir können es nutzen, um eine isolierte Python-Umgebung für Jupyter zu installieren und zu konfigurieren.

Bevor wir Jupyter installieren, müssen wir die virtuelle Umgebung aktivieren. Geben Sie hierzu Folgendes ein:

  • source my_project_env/bin/activate

Ihre Eingabeaufforderung ändert sich und zeigt an, dass Sie jetzt innerhalb einer virtuellen Python-Umgebung arbeiten. Ihre Eingabeaufforderung sieht nun in etwa wie folgt aus: (my_project_env)user@host:~/my_project_dir$.

Jetzt sind Sie bereit, Jupyter in diese virtuelle Umgebung zu installieren.

Schritt 3 — Installieren von Jupyter

Wenn Ihre virtuelle Umgebung aktiv ist, installieren Sie Jupyter mit der lokalen Instanz von pip.

Anmerkung: Wenn die virtuelle Umgebung aktiviert ist (wenn Ihre Eingabe über (my_project_env) dieser voransteht), verwenden Sie pip anstelle von pip3, selbst wenn Sie Python 3 verwenden. Die Kopie der virtuellen Umgebung des Tools ist immer pip – unabhängig von der Python-Version.

  • pip install jupyter

Jetzt haben Sie alle zur Ausführung von Jupyter benötigte Software erfolgreich installiert. Wir können nun den Notebook-Server starten.

Schritt 4 — Ausführen von Jupyter Notebook

Sie haben nun alles, was Sie brauchen, um Jupyter Notebook auszuführen! Um es auszuführen, führen Sie den folgenden Befehl aus:

  • jupyter notebook

Ein Protokoll der Aktivitäten von Jupyter Notebooks wird auf das Terminal gedruckt. Wenn Sie Jupyter Notebook ausführen, läuft es auf einer bestimmten Portnummer. Das erste Notebook, das Sie ausführen, verwendet normalerweise Port 8888. Um die Portnummer, auf der Jupyter Notebook ausgeführt wird, zu überprüfen, prüfen Sie die Ausgabe des Befehls, der zum Starten verwendet wird:

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

Wenn Sie Jupyter Notebook auf einem lokalen Computer (nicht auf einem Server) ausführen, können Sie zur angezeigten URL navigieren, um eine Verbindung mit Jupyter Notebook herzustellen. Wenn Sie Jupyter Notebook auf einem Server ausführen, müssen Sie über SSH-Tunneling mit dem Server eine Verbindung herstellen, wie im nächsten Abschnitt beschrieben.

Jetzt können Sie die SSH-Verbindung offen lassen und Jupyter Notebook weiter ausführen oder die App beenden und erneut ausführen, wenn Sie SSH-Tunneling eingerichtet haben. Wir wollen den Jupyter Notebook-Prozess stoppen. Wir führen ihn wieder aus, sobald wir SSH-Tunnel eingerichtet haben. Um den Jupyter Notebook-Prozess zu stoppen, drücken Sie STRG+C, geben Sie Y und dann zur Bestätigung ENTER ein. Die folgende Ausgabe wird angezeigt:

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

Wir richten nun einen SSH-Tunnel ein, damit wir auf das Notebook zugreifen können.

Schritt 5 — Verbinden mit dem Server mit SSH-Tunneling

In diesem Abschnitt zeigen wir, wie wir mit der Weboberfläche von Jupyter Notebook eine Verbindung über SSH-Tunneling herstellen. Da Jupyter Notebook auf einem bestimmten Port auf dem Server ausgeführt wird (wie :8888, :8889 usw.), ermöglicht SSH-Tunneling eine sichere Verbindung mit dem Server-Port.

Die nächsten beiden Unterabschnitte beschreiben, wie Sie einen SSH-Tunnel aus 1) einem Mac oder Linux oder 2) Windows erstellen. Siehe der Unterabschnitt für Ihren lokalen Computer.

SSH-Tunneling mit einem Mac oder Linux

Wenn Sie einen lokalen Mac- oder Linux-Computer verwenden, ähneln die Schritte zum Erstellen eines SSH-Tunnels der Anmeldung mit einem Remote-Server über SSH, mit Ausnahme der zusätzlichen Parameter im Befehl ssh. Dieser Unterabschnitt beschreibt die zusätzlichen Parameter, die im Befehl ssh für erfolgreiches Tunneling benötigt werden.

SSH-Tunneling kann durch Ausführen des folgenden SSH-Befehls in einem neuen lokalen Terminalfenster erfolgen:

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

Der Befehl ssh öffnet eine SSH-Verbindung, aber -L gibt an, dass der bestimmte Port auf dem lokalen (Client) Host remote-seitig (Server) an den bestimmten Host weitergeleitet werden soll. Das bedeutet, dass alles, was auf der zweiten Portnummer (z. B. 8888) auf dem Server auf der ersten Portnummer (z. B. 8888) auf dem lokalen Computer angezeigt wird.

Optional ändern Sie Port 8888 in einen anderen Ihrer Wahl, um zu vermeiden, einen Port zu nutzen, der bereits in einem anderen Prozess verwendet wird.

server_username ist Ihr Benutzername (z. B. sammy) auf dem Server, den Sie erstellt haben, und your_server_ip lautet die IP-Adresse Ihres Servers.

Für den Benutzernamen sammy und die Adresse des Servers <^>203.0.113.0^> wäre der Befehl:

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

Wenn nach Ausführung des Befehls ssh-L kein Fehler angezeigt wird, können Sie in Ihre Programmierumgebung wechseln und Jupyter Notebook ausführen:

  • jupyter notebook

Sie erhalten eine Ausgabe mit einer URL. Öffnen Sie von einem Webbrowser auf Ihrem lokalen Rechner die Weboberfläche von Jupyter Notebook mit der URL, die mit http://localhost:8888 beginnt. Stellen Sie sicher, dass die Token-Nummer enthalten ist oder geben Sie die Token-Nummer, wenn Sie dazu aufgefordert werden, unter http://localhost:8888 ein.

SSH-Tunneling mit Windows und Putty

Wenn Sie Windows verwenden, können Sie einen SSH-Tunnel mit Putty erstellen.

Geben Sie zunächst die Adresse des Servers oder die IP-Adresse als Hostnamen ein, wie hier dargestellt:

Hostname für SSH-Tunnel festlegen

Klicken Sie dann unten im linken Fenster auf SSH, um das Menü auszuklappen und klicken Sie anschließend auf Tunnels. Geben Sie die lokale Portnummer ein, die Sie zum Zugriff auf Jupyter auf Ihrem lokalen Computer verwenden möchten. Wählen Sie 8000 oder höher aus, um Ports zu vermeiden, die von anderen Diensten verwendet werden, und setzen Sie das Ziel als localhost:8888 fest (wobei :8888 der Port-Nummer entspricht, auf der das Jupyter Notebook ausgeführt wird).

Klicken Sie nun auf die Schaltfläche Add (hinzufügen). Die Ports sollten in der Liste Forwarded ports angezeigt werden:

Forwarded Ports Liste

Klicken Sie abschließend auf die Schaltfläche Open, um eine Verbindung zum Server über SSH herzustellen und die gewünschten Ports zu tunneln. Navigieren Sie im Browser zu http://localhost:8000 (oder einen anderen beliebigen Port), um sich mit dem Jupyter Notebook zu verbinden, das auf dem Server ausgeführt wird. Stellen Sie sicher, dass die Token-Nummer enthalten ist oder geben Sie die Token-Nummer unter http://localhost:8888 ein, wenn Sie dazu aufgefordert werden.

Schritt 6 — Verwenden von Jupyter Notebook

Dieser Abschnitt beschreibt die Grundlagen der Verwendung von Jupyter Notebook. Wenn Sie Jupyter Notebook nicht bereits ausführen, starten Sie es mit dem Befehl jupyter notebook.

Sie sollten nun damit über einen Webbrowser verbunden sein. Jupyter Notebook ist ein sehr leistungsfähiges Tool mit vielen Funktionen. Dieser Abschnitt beschreibt einige grundlegende Funktionen für den Einstieg ins Notebook. Jupyter Notebook zeigt alle Dateien und Ordner im Verzeichnis an, aus dem es ausgeführt wird. Wenn Sie also an einem Projekt arbeiten, müssen Sie sie aus dem Projektverzeichnis starten.

Um eine neue Notebook-Datei zu erstellen, wählen Sie New > Python 3 aus dem Pull-down-Menü oben rechts:

Erstellen eines neuen Python 3 Notebooks

Das öffnet ein Notebook. Wir können nun Python-Code in der Zelle ausführen oder die Zelle in Markdown ändern. Ändern Sie beispielsweise die erste Zelle, um Markdown zu akzeptieren, indem Sie über die obere Navigationsleiste auf Cell > Cell Type > Markdown klicken. Wir können nun Notizen mit Markdown schreiben und sogar Gleichungen einschließen, die in LaTeX geschrieben wurden, indem wir Sie zwischen die Symbole $$ setzen. Geben Sie beispielsweise Folgendes in die Zelle ein, nachdem Sie sie in Markdown geändert haben:

# First Equation

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

where $x = 2$

Um Markdown in Rich-Text zu verwandeln, betätigen Sie die Tasten CTRL und ENTER. Sie erhalten eine Ausgabe, die etwa folgendermaßen aussieht:

Markdown-Ergebnisse

Sie können die Markdown-Zellen nutzen, um Notizen zu machen und Ihren Code zu dokumentieren. Wir wollen diese Gleichung implementieren und das Ergebnis drucken. Klicken Sie auf die Zelle oben und betätigen Sie dann gleichzeitig die Tasten ALT und ENTER, um eine Zelle darunter hinzuzufügen.

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

Um den Code auszuführen, betätigen Sie CTRL+ENTER. Sie erhalten die folgenden Ergebnisse:

Ergebnisse der ersten Gleichung

Sie haben nun die Möglichkeit, Module zu importieren und das Notebook so zu verwenden, wie in jeder anderen Python-Entwicklungsumgebung!

Zusammenfassung

Herzlichen Glückwunsch! Sie sollten nun reproduzierbaren Python-Code und Notizen in Markdown mit Jupyter Notebook schreiben können. Um Jupyter Notebook aus der Oberfläche heraus schnell kennenzulernen, wählen Sie Help > User Interface Tour aus dem Navigationsmenü oben.

Von hier aus können Sie ein Datenanalyse- und Visualisierungsprojekt beginnen, indem Sie Data Analysis und Visualisierung mit Pandas und Jupyter Notebook in Python 3 lesen.

Creative Commons License