Python Notebooks
das ist schon passiert
uv und quarto installieren
# uv installieren:
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
# Quarto installiere
wget https://quarto.org/download/latest/quarto-linux-amd64.deb
sudo apt install ./quarto-linux-amd64.decd ~/b/test
# Projektordner erstellen und betreten
mkdir mein_quarto_projekt && cd mein_quarto_projekt
# Neues Python-Projekt im Ordner mein_quarto_projekt/qmd initialisieren
uv init qmd
# Jupyter und den Kernel für Quarto installieren
cd qmd
uv add jupyter lab notebook ipykernel jupytext
Test:
# frei nach Wahl eine Oberfläche wählen: Lab oder Notebook?
uv run jupyter lab
uv run jupyter notebookNeue Datei mein_notebook.qmd erzeugen (falls sie noch nicht existiert) und mit mein_notebook.ipynb pairen, d.h. in beiden Dateien unsichtbare Metadaten hinzufügen. Beide Dateien wissen ab jetzt, dass sie “Zwillinge” sind:
# neue leere qmd Datei anlegen
touch mein_notebook.qmd
# mit jupytext pairen und yaml-header anlegen
uv run jupytext --set-formats ipynb,qmd mein_notebook.qmd
ls mein_notebook.*# statt über CLI alternativ über Quarto Preview synchronisieren
quarto preview mein_notebook.qmdSpezialfall, nur in besonderen Situationen nötig: Jupytext anweisen, selbstständig den gesamten Ordner (inklusive Unterordnern) nach gepairten Dateien zu durchsuchen:
uv run jupytext --sync --from ipynb --to qmd .Automatisches Pairing für das gesamte Projekt: Jedes Jupyter Notebook soll automatisch gepairt werden. Datei `jupytext.toml im Projektverzeichnis:
# jupytext.toml
formats = "ipynb,qmd"oder so:
echo 'formats = "ipynb,qmd"' >> jupytext.tomlSobald diese Datei existiert, synchronisiert Jupytext bei jedem Speichervorgang innerhalb von Jupyter Lab automatisch alle .qmd und .ipynb Dateien. CLI: Wenn die .qmd in Emacs neuer ist, aktualisiert sie die .ipynb. Wenn die .ipynb in Jupyter neuer ist, aktualisiert sie die .qmd :
# manuell synchronisieren
# 1. Sicherstellen, dass Emacs- und Jupyter-Stände identisch sind
run jupytext --sync *.ipynb *.qmdWenn das Pairing über jupytext funktioniert, wollen wir vermeiden, in Quarto sowohl die ipynb wie auch die qmd-Datei zu rendern. Ausschließlich qmd rendern:
# _quarto.yml
project:
type: default
# Quarto rendert nur .qmd-Dateien und ignoriert alle Jupyter Notebooks
render:
- "*.md"
- "*.qmd"ipynb ist Gift für git, also in der gitignore ausschließen.
Das Projekt auf einem anderen PC klonen: Ihr Git-Repository ist jetzt wunderbar schlank, da es nur noch die reinen Textdateien (.qmd) enthält. Wenn Sie das Projekt auf einem neuen Rechner auschecken oder Ihr Backup wiederherstellen, fehlt die .ipynb-Datei zuerst. Das ist aber kein Problem! Sie können die .ipynb-Datei jederzeit mit einem einzigen Befehl aus der .qmd-Datei wieder generieren:
uv run jupytext --to ipynb *.qmdgar keine .ipynb-Dateien mehr erzeugen, sondern rein auf der .qmd-Datei arbeiten:
# jupytext.toml
default_notebook_metadata_filter = "jupytext"
# Verhindert das automatische Generieren oder Pairen mit .ipynb
formats = "qmd"