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: