Einrichten von Jupyter Notebook mit Python 3 unter Ubuntu 18.04

Einführung

MitJupyter Notebook, einer Open-Source-Webanwendung, können Sie interaktiven Code, Visualisierungen und mehr erstellen und freigeben. Dieses Tool kann mit verschiedenen Programmiersprachen verwendet werden, darunter Python, Julia, R, Haskell und Ruby. Es wird häufig zum Arbeiten mit Daten, zur statistischen Modellierung und zum maschinellen Lernen verwendet.

In diesem Tutorial werden Sie durch die Einrichtung von Jupyter Notebook für die Ausführung auf einem Ubuntu 18.04-Server geführt und lernen, wie Sie eine Verbindung zum Notebook herstellen und es verwenden. Jupyter-Notizbücher (oder einfach Notizbücher) sind Dokumente, die von der Jupyter-Notizbuch-App erstellt wurden und sowohl Computercode als auch Rich-Text-Elemente (Absätze, Gleichungen, Abbildungen, Links usw.) enthalten, mit denen reproduzierbare Forschungsergebnisse präsentiert und geteilt werden können.

Am Ende dieses Handbuchs können Sie Python 3-Code mit Jupyter Notebook ausführen, das auf einem Remoteserver ausgeführt wird.

Voraussetzungen

Um dieses Handbuch zu vervollständigen, sollten Sie eine neue Ubuntu 18.04-Serverinstanz mit einer grundlegenden Firewall und einem Benutzer ohne Rootberechtigung mit konfigurierten Sudo-Berechtigungen haben. Sie können lernen, wie Sie dies einrichten, indem Sie unsereinitial server setup tutorial durchlaufen.

[[Schritt-1 -—- Python einrichten]] == Schritt 1 - Python einrichten

Zu Beginn des Vorgangs installieren wir die Abhängigkeiten, die wir für unsere Python-Programmierumgebung benötigen, aus den Ubuntu-Repositorys. Ubuntu 18.04 ist mit Python 3.6 vorinstalliert. Wir werden den Python-Paketmanager-Pip verwenden, um später zusätzliche Komponenten zu installieren.

Wir müssen zuerst den lokalenapt-Paketindex aktualisieren und dann die Pakete herunterladen und installieren:

sudo apt update

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

sudo apt install python3-pip python3-dev

Nun können wir eine virtuelle Python-Umgebung einrichten, in der Jupyter installiert wird.

[[Schritt-2 - Erstellen einer Python-virtuellen Umgebung für Jupiter]] == Schritt 2 - Erstellen einer virtuellen Python-Umgebung für Jupyter

Nachdem wir Python 3, seine Header-Dateien und Pip bereit haben, können wir eine virtuelle Python-Umgebung erstellen, um unsere Projekte zu verwalten. Wir werden Jupyter in dieser virtuellen Umgebung installieren.

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

Aktualisieren Sie pip und installieren Sie das 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 Umgebungsvariablehomeauf das Ausgangsverzeichnis des Zielbenutzers setzt.

Mitvirtualenv können wir beginnen, unsere Umgebung zu formen. Erstellen Sie ein Verzeichnis und verschieben Sie es in ein Verzeichnis, in dem wir unsere Projektdateien speichern können. Wir nennen diesmy_project_dir, aber Sie sollten einen Namen verwenden, der für Sie und Ihre Arbeit von Bedeutung ist.

mkdir ~/my_project_dir
cd ~/my_project_dir

Im Projektverzeichnis erstellen wir eine virtuelle Python-Umgebung. Für dieses Tutorial nennen wir esmy_project_env, aber Sie sollten es etwas nennen, das für Ihr Projekt relevant ist.

virtualenv my_project_env

Dadurch wird ein Verzeichnis mit dem Namenmy_project_env in Ihrem Verzeichnismy_project_direrstellt. Im Inneren werden eine lokale Version von Python und eine lokale Version von pip installiert. Damit können wir eine isolierte Python-Umgebung für Jupyter installieren und konfigurieren.

Bevor wir Jupyter installieren, müssen wir die virtuelle Umgebung aktivieren. Sie können dies tun, indem Sie Folgendes eingeben:

source my_project_env/bin/activate

Ihre Eingabeaufforderung sollte sich ändern, um anzuzeigen, dass Sie jetzt in einer virtuellen Python-Umgebung arbeiten. Es sieht ungefähr so ​​aus:(my_project_env)user@host:~/my_project_dir$.

Sie können Jupyter jetzt in dieser virtuellen Umgebung installieren.

[[Schritt-3 -—- Install-Jupiter]] == Schritt 3 - Installieren Sie Jupyter

Installieren Sie bei aktivierter virtueller Umgebung Jupyter mit der lokalen Instanz von pip.

[.note] #Note: Wenn die virtuelle Umgebung aktiviert ist (wenn Ihrer Eingabeaufforderung(my_project_env) vorangestellt ist), verwenden Siepip anstelle vonpip3, auch wenn Sie Python verwenden 3. Die Kopie des Tools in der virtuellen Umgebung heißt unabhängig von der Python-Version immerpip.
#

pip install jupyter

Zu diesem Zeitpunkt haben Sie die gesamte Software erfolgreich installiert, die zum Ausführen von Jupyter erforderlich ist. Jetzt können wir den Notebook-Server starten.

[[Schritt 4 - Run-Jupiter-Notizbuch ausführen]] == Schritt 4 - Jupyter-Notizbuch ausführen

Sie haben jetzt alles, was Sie zum Ausführen von Jupyter Notebook benötigen! Führen Sie dazu den folgenden Befehl aus:

jupyter notebook

Ein Protokoll der Aktivitäten des Jupyter Notebooks wird auf dem Terminal ausgedruckt. Wenn Sie Jupyter Notebook ausführen, wird es auf einer bestimmten Portnummer ausgeführt. Das erste Notebook, das Sie ausführen, verwendet normalerweise Port8888. Informationen zum Überprüfen der Portnummer, auf der Jupyter Notebook ausgeführt wird, finden Sie in der Ausgabe des Befehls, mit dem es gestartet wurde:

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 zu Jupyter Notebook herzustellen. Wenn Sie Jupyter Notebook auf einem Server ausführen, müssen Sie mithilfe von SSH-Tunneling eine Verbindung zum Server herstellen, wie im nächsten Abschnitt beschrieben.

Zu diesem Zeitpunkt können Sie die SSH-Verbindung offen halten und Jupyter Notebook weiterhin ausführen, oder Sie können die App beenden und erneut ausführen, sobald Sie den SSH-Tunnel eingerichtet haben. Lassen Sie uns den Jupyter Notebook-Prozess anhalten. Wir werden es erneut ausführen, sobald wir SSH-Tunnel eingerichtet haben. Um den Jupyter Notebook-Prozess zu stoppen, drücken SieCTRL+C, geben SieY und dannENTER zur Bestätigung 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 jetzt einen SSH-Tunnel ein, damit wir auf das Notebook zugreifen können.

[[Schritt 5 - Verbindung zum Server mithilfe von SSH-Tunneling herstellen]] == Schritt 5 - Verbindung zum Server mithilfe von SSH-Tunneling herstellen

In diesem Abschnitt erfahren Sie, wie Sie mithilfe von SSH-Tunneling eine Verbindung zur Jupyter Notebook-Weboberfläche herstellen. Da Jupyter Notebook an einem bestimmten Port des Servers ausgeführt wird (z. B.:8888,:8889 usw.), können Sie durch SSH-Tunneling eine sichere Verbindung zum Port des Servers herstellen.

In den nächsten beiden Unterabschnitten wird beschrieben, wie Sie einen SSH-Tunnel aus 1) einem Mac oder Linux und 2) Windows erstellen. Bitte beziehen Sie sich auf den Unterabschnitt für Ihren lokalen Computer.

SSH-Tunneling mit einem Mac oder Linux

Wenn Sie einen Mac oder Linux verwenden, ähneln die Schritte zum Erstellen eines SSH-Tunnels der Verwendung von SSH zum Anmelden bei Ihrem Remote-Server, außer dass der Befehlssh zusätzliche Parameter enthält. In diesem Unterabschnitt werden die zusätzlichen Parameter beschrieben, die im Befehlssherforderlich sind, um erfolgreich zu tunneln.

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

ssh -L 8888:localhost:8888 your_server_username@your_server_ip

Der Befehlssh öffnet eine SSH-Verbindung,-L gibt jedoch an, dass der angegebene Port auf dem lokalen (Client-) Host an den angegebenen Host und den angegebenen Port auf der Remote-Seite (Server) weitergeleitet werden soll. Dies bedeutet, dass alles, was auf der zweiten Portnummer läuft (z. 8888) auf dem Server wird auf der ersten Portnummer angezeigt (z. 8888) auf Ihrem lokalen Computer.

Ändern Sie optional Port8888 in einen Ihrer Wahl, um zu vermeiden, dass ein Port verwendet wird, der bereits von einem anderen Prozess verwendet wird.

server_username ist Ihr Benutzername (z. sammy) auf dem von Ihnen erstellten Server undyour_server_ip ist die IP-Adresse Ihres Servers.

Für den Benutzernamensammy und die Serveradresse203.0.113.0 lautet der Befehl beispielsweise:

ssh -L 8888:localhost:8888 [email protected]

Wenn nach dem Ausführen des Befehlsssh -Lkein 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 in einem Webbrowser auf Ihrem lokalen Computer die Jupyter Notebook-Weboberfläche mit der URL, die mithttp://localhost:8888 beginnt. Stellen Sie sicher, dass die Token-Nummer enthalten ist, oder geben Sie die Token-Nummern-Zeichenfolge ein, wenn Sie beihttp://localhost:8888 dazu aufgefordert werden.

SSH-Tunneling mit Windows und Putty

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

Geben Sie zuerst die Server-URL oder die IP-Adresse als Hostnamen ein, wie gezeigt:

Set Hostname for SSH Tunnel

Klicken Sie anschließend unten im linken Bereich aufSSH, um das Menü zu erweitern, und klicken Sie dann aufTunnels. Geben Sie die lokale Portnummer ein, die Sie für den Zugriff auf Jupyter auf Ihrem lokalen Computer verwenden möchten. Wählen Sie8000 oder höher, um von anderen Diensten verwendete Ports zu vermeiden, und legen Sie das Ziel alslocalhost:8888 fest, wobei:8888 die Nummer des Ports ist, auf dem Jupyter Notebook ausgeführt wird.

Klicken Sie nun auf die SchaltflächeAdd, und die Ports sollten in der ListeForwarded ports angezeigt werden:

Forwarded ports list

Klicken Sie abschließend auf die SchaltflächeOpen, um über SSH eine Verbindung zum Server herzustellen und die gewünschten Ports zu tunneln. Navigieren Sie in einem Webbrowser zuhttp://localhost:8000 (oder einem von Ihnen gewählten Port), um eine Verbindung zu Jupyter Notebook herzustellen, das auf dem Server ausgeführt wird. Stellen Sie sicher, dass die Token-Nummer enthalten ist, oder geben Sie die Token-Nummern-Zeichenfolge ein, wenn Sie beihttp://localhost:8000 dazu aufgefordert werden.

[[Schritt-6 -—- mit-Jupyter-Notizbuch]] == Schritt 6 - Verwenden von Jupyter-Notizbuch

In diesem Abschnitt werden die Grundlagen der Verwendung von Jupyter Notebook erläutert. Wenn Jupyter Notebook derzeit nicht ausgeführt wird, starten Sie es mit dem Befehljupyter notebook.

Sie sollten jetzt mit einem Webbrowser verbunden sein. Jupyter Notebook ist ein sehr leistungsfähiges Tool mit vielen Funktionen. In diesem Abschnitt werden einige der grundlegenden Funktionen beschrieben, mit denen Sie das Notebook verwenden können. Jupyter Notebook zeigt alle Dateien und Ordner in dem Verzeichnis an, in dem es ausgeführt wird. Wenn Sie also an einem Projekt arbeiten, müssen Sie es aus dem Projektverzeichnis starten.

Um eine neue Notebook-Datei zu erstellen, wählen Sie im Pulldown-Menü oben rechtsNew>Python 3 aus:

Create a new Python 3 notebook

Dies öffnet ein Notizbuch. Wir können jetzt Python-Code in der Zelle ausführen oder die Zelle in Markdown ändern. Ändern Sie beispielsweise die erste Zelle, die Markdown akzeptiert, indem Sie in der oberen Navigationsleiste aufCell>Cell Type>Markdown klicken. Wir können jetzt Notizen mit Markdown schreiben und sogar inLaTeX geschriebene Gleichungen einschließen, 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 den Markdown in Rich Text umzuwandeln, drücken SieCTRL+ENTER. Das Ergebnis sollte folgender sein:

results of markdown

Mit den Markdown-Zellen können Sie Notizen machen und Ihren Code dokumentieren. Lassen Sie uns diese Gleichung implementieren und das Ergebnis ausdrucken. Klicken Sie auf die obere Zelle und drücken SieALT+ENTER, um eine Zelle darunter hinzuzufügen. Geben Sie den folgenden Code in die neue Zelle ein.

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

Drücken SieCTRL+ENTER, um den Code auszuführen. Sie erhalten die folgenden Ergebnisse:

first equation results

Sie haben jetzt die Möglichkeit,import modules zu verwenden und das Notebook wie in jeder anderen Python-Entwicklungsumgebung zu verwenden!

Fazit

Herzliche Glückwünsche! Sie sollten nun in der Lage sein, mit Jupyter Notebook reproduzierbaren Python-Code und Notizen in Markdown zu schreiben. Um einen kurzen Überblick über Jupyter Notebook über die Benutzeroberfläche zu erhalten, wählen Sie im oberen NavigationsmenüHelp>User Interface Tour, um weitere Informationen zu erhalten.

Von hier aus können Sie ein Datenanalyse- und Visualisierungsprojekt starten, indem SieData Analysis and Visualization with pandas and Jupyter Notebook in Python 3 lesen.

Wenn Sie mehr erfahren möchten, können Sie unsere Serie zuTime Series Visualization and Forecasting lesen.