3.6. Jupyter Kernels#
Jupyter Kernels sind Programm-Umgebungen, die ein Jupyter Notebook interaktiv werden lässt. Die korrekte Konfiguration des Kernels ist für die lokale Entwicklung ebenso wie für die Nutzung in GitHub Actions (und anderen CI/CD-Umgebungen) relevant.
Was ist ein Jupyter Kernel?
Ein Jupyter Kernel ist ein separater Prozess, der Ihren Code ausführt und mit der Jupyter-Benutzeroberfläche kommuniziert. Wenn Sie Code in Ihrem Buch schreiben, nimmt der Kernel Ihren Code entgegen, führt ihn in der entsprechenden Programmiersprache aus und liefert die Ergebnisse zurück.
3.6.1. Grundlagen und Funktionsweise#
Jupyter Notebooks können mit vielen verschiedenen Programmiersprachen arbeiten – Python, R, Julia, Scala und auch spezialisierten Sprachen wie SPARQL für Datenbankabfragen. Jede Sprache benötigt ihre eigene Ausführungsumgebung, um den Code korrekt zu verarbeiten. Deshalb brauchen wir verschiedene Kernels für verschiedene Sprachen.
Ohne Kernels:
würde Ihr Code nicht ausgeführt werden,
würden Variablen nicht zwischen Zellen gespeichert und
könnten Sie keine Ausgaben, Diagramme oder Ergebnisse sehen.
Die am häufigsten verwendeten Kernels in unseren Jupyter Books sind der IPython Kernel für Python-Code, der IR Kernel für R-Code und der SPARQL Kernel für Datenbankabfragen mit der SPARQL-Abfragesprache zur Arbeit mit Wissensgraphen und semantischen Daten.
3.6.2. Kernels in GitHub Actions einrichten#
Wenn Sie Ihr Jupyter Book lokal erstellen müssen Sie auch die passenden Kernels lokal installieren. Der Python-Kernel wird bei einer Installation des Pakets jupyter
mitinstalliert. Andere Kernels müssen Sie ggf. selbst nachinstallieren. Befolgen Sie dazu die Anweisungen im jeweiligen Book bzw. orientieren Sie sich an den Nachfolgenden Ausführungen. Eine GitHub Action startet normalerweise mit einer leeren Linux-Umgebung, sodass Sie die Kernels dort erst installieren und konfigurieren müssen.
Die nachfolgenden Code-Beispiele entstammen der Datei .github/workflows/deploy-book-python-sparql-r.yml
welche die Installation und Konfiguration der drei Kernels vornimmt. Sie kann als Grundlage für spezielle Konfigurationen in Ihrem Book dienen.
Python Kernel#
Die Python-Einrichtung ist relativ unkompliziert, da der entsprechende Kernel bei der Installation der benötigten Python-Pakete via requirements.txt
installiert und konfiguriert wird:
25 - name: Set up Python
26 uses: actions/setup-python@v5
27 with:
28 python-version-file: '.python-version'
29 cache: pip
30
31 - name: Install Python dependencies
32 run: |
33 pip install -r requirements.txt
Die Actions im Template nutzen die Datei .python-version
in der die Python-Version definiert ist. Wollen Sie eine andere Python-Version nutzen, so können Sie diese in dieser Datei einheitlich ändern.
R Kernel#
R erfordert etwas mehr Schritte, da wir nicht nur R und den passenden Kernel installieren, sondern diesen zudem für die Nutzung in Jupyter Notebooks registrieren müssen.
37 - name: Set up R
38 uses: r-lib/actions/setup-r@v2
39
40 - name: Install R dependencies
41 uses: r-lib/actions/setup-r-dependencies@v2
42 with:
43 cache: true
44 cache-version: 2
45 packages: |
46 any::tidyverse
47 any::IRkernel
48 install-pandoc: false
49 install-quarto: false
50
51 - name: Set up IRkernel
52 run: |
53 IRkernel::installspec(name="ir", displayname="R")
54 shell: Rscript {0}
Zusätzlich zum IRkernel
wird auch das sog. tidyverse
installiert, welches für die Arbeit mit Daten in R weit verbreitet ist.
SPARQL Kernel einrichten#
Die Installation des SPARQL-Kernels ist einfach, wenn Python bereits eingerichtet ist:
58 - name: Install SPARQL kernel
59 run: |
60 jupyter sparqlkernel install --user
Mehrere Kernels kombinieren#
Möchten Sie in einem Workflow mehrere Programmiersprachen unterstützen, so fügen Sie alle Einrichtungsschritte nacheinander ein. Entscheidend ist, dass sämtliche Kernel installiert sind, bevor der Build des Books gestartet wird. Nutzen Sie hierzu die Beispiele im vorliegenden Template.
Kernels überprüfen#
Es ist immer eine gute Praxis zu überprüfen, ob alle Ihre Kernels ordnungsgemäß installiert sind:
64 - name: Log all available kernels
65 run: |
66 jupyter kernelspec list
Dieser Befehl zeigt Ihnen alle Kernels an, die GitHub Actions zur Ausführung Ihrer Notebooks verwenden kann.
Das Verständnis von Kernels hilft Ihnen bei der Fehlerbehebung, wenn Notebooks nicht ordnungsgemäß ausgeführt werden, und stellt sicher, dass Ihr Jupyter Book sowohl lokal als auch in automatisierten Umgebungen erfolgreich erstellt wird.
Zusätzliche Materialien
Für detailliertere Informationen über Jupyter Kernels schauen Sie sich diese Ressourcen an: