Marimo – Open-Source Reactive Notebook für Python
(github.com/marimo-team)- Ein Notebook, mit dem sich Daten und Modelle schnell ausprobieren lassen
- Ausführung auf Zellebene, automatische Berechnung und Aktualisierung
- Ohne versteckten Zustand jederzeit erneut ausführbar
- Wird als Python-Datei gespeichert und ist dadurch Git-friendly
- Notebooks lassen sich in Pipelines umwandeln oder als interaktive Web-App bereitstellen
Reaktive Programmierumgebung
- marimo gewährleistet die Konsistenz von Notebook-Code, Ausgaben und Programmzustand.
- Wenn eine Zelle ausgeführt wird, aktualisiert marimo automatisch die Zellen, die auf diese Variablen verweisen, und verhindert so Fehler durch manuelles erneutes Ausführen von Zellen.
- Wenn eine Zelle gelöscht wird, entfernt marimo die entsprechenden Variablen aus dem Programmspeicher und beseitigt damit versteckten Zustand.
- Notebooks werden in einer deterministischen Reihenfolge auf Basis von Variablenreferenzen ausgeführt und hängen nicht von der Position der Zellen auf der Seite ab.
- Interagiert man mit UI-Elementen wie Slidern, Dropdowns oder DataFrame-Transformern, werden die Zellen, die diese Werte verwenden, automatisch mit den neuesten Werten erneut ausgeführt.
- marimo analysiert den Code statisch und führt nur die Zellen aus, die tatsächlich ausgeführt werden müssen, was die Performance verbessert.
- marimo enthält verschiedene Komfortfunktionen wie GitHub Copilot, Black-Code-Formatierung, HTML-Export, schnelle Code-Vervollständigung und eine VS Code-Erweiterung.
Schnellstart
- Installation: Installiere marimo im Terminal mit
pip install marimooderconda install -c conda-forge marimo. - Notebook erstellen: Erstelle mit
marimo editorein leeres Notebook und bearbeite mitmarimo edit your_notebook.pyein Notebook mit einem bestimmten Namen. - App ausführen: Starte mit
marimo run your_notebook.pydas Notebook als Web-App. Diese App wird in der marimo Cloud bereitgestellt. - Als Skript ausführen: Führe mit
python your_notebook.pyein marimo-Notebook als Skript aus. - Jupyter-Notebook automatisch konvertieren: Verwende die CLI, um Jupyter-Notebooks automatisch in marimo-Notebooks umzuwandeln.
- Tutorials: Führe
marimo tutorial --helpaus, um alle Tutorials aufzulisten.
Mehr erfahren
- Mit marimo können auch Einsteiger leicht loslegen, gleichzeitig bietet es viele Funktionen für professionelle Nutzer.
- So kann man sich zum Beispiel das mit marimo erstellte Embedding-Visualisierungstool (Video) ansehen.
- Weitere Informationen gibt es in der Dokumentation, im Ordner
examples/und in der Galerie.
Inspiration
- marimo denkt Python-Notebooks als reproduzierbare, interaktive und teilbare Python-Programme neu.
- Ausgehend von der Überzeugung, dass die verwendeten Werkzeuge unsere Denkweise prägen, hofft marimo, der Python-Community eine bessere Programmierumgebung zu bieten.
- Inspiriert wurde es von vielen Quellen und Projekten wie Pluto.jl, ObservableHQ und Essays von Bret Victor.
- marimo ist Teil einer größeren Bewegung rund um reaktive Dataflow-Programmierung, in der funktionale, deklarative und reaktive Programmierideen aus Tools wie IPyflow, streamlit, TensorFlow, PyTorch, JAX und React verschiedene Werkzeuge verbessern.
Meinung von GN⁺
- marimo ist ein innovatives reaktives Python-Notebook, das die Grenzen bestehender Werkzeuge wie Jupyter-Notebooks überwinden will und Experimente mit Daten und Modellen, Vertrauen in die Korrektheit von Notebooks sowie die produktive Nutzung von Notebooks als Pipelines oder interaktive Web-Apps ermöglicht.
- Das Tool legt großen Wert auf Konsistenz und Reproduzierbarkeit des Codes und verbessert das Programmiererlebnis, indem es die Interaktion mit Benutzeroberflächen-Elementen vereinfacht.
- marimo erleichtert Zusammenarbeit und Teilen in den Bereichen Data Science, Forschung und Bildung und bietet durch den Aufbau einer Community eine Plattform, die Interaktion und Wissensaustausch zwischen Nutzern fördert.
1 Kommentare
Hacker-News-Kommentare
Als Nutzer von Jupyter- und Observable-Notebooks hatte ich das Gefühl, dass Observable bei der Zell-Reaktivität Schwächen hat, und ich finde, dass dieses Problem hier gut gelöst wurde. Mir gefällt, dass das Marimo-Dateiformat in Python vorliegt, und auch die Apache-2-Lizenz sagt mir zu. Außerdem bin ich beeindruckt davon, wie GitHub-Copilot-Funktionen entdeckt werden.
Bei der Zusammenarbeit mit anderen, die Jupyter Notebook verwenden, waren die Umgebungseinrichtung und der versteckte Zustand von Jupyter problematisch. Dieses Projekt versucht, das zweite Problem zu lösen, opfert dafür aber Flexibilität. Wenn der Schwerpunkt auf Reproduzierbarkeit liegt, kann das ein vertretbarer Kompromiss sein.
requirements.txtist die Standardlösung für ein anderes Problem, aber seine Nutzung ist umständlich.requirements.txtwird als umständlich empfunden, und es wird auf eine bessere Lösung gehofft.Ich freue mich, dass endlich jemand das angeht. Es gibt zwar eine VSCode-Erweiterung, aber schade ist, dass sie statt der bestehenden Notebook-Oberfläche von VSCode eine vollständige Browseransicht öffnet. Außerdem werden Gedanken zu Paketverwaltung und zum Deployment von Produktionscode geteilt.
Ich habe ein paar Fragen zur Plattform: Gibt es interaktive Widgets, und wie sehen Abhängigkeiten und Interaktionen mit dem Jupyter-Ökosystem aus? Ich hätte gern eine Erklärung dazu.
Ich finde, die Jupytext-Erweiterung wird unterschätzt. Sie löst die Probleme von Jupyter bei der Git-Interaktion sowie problematische Programmierpraktiken, die das Schreiben von Bibliotheksdateien behindern. Ich erwarte, dass die reaktiven Updates des neuen Projekts für Einsteiger oder bei komplexen Projekten nützlich sein werden.
Die Liste der Abhängigkeiten ist kurz, und abgesehen von tornado zieht nichts viele weitere Zusatzabhängigkeiten nach sich. Das wirkt wie ein sehr nützliches und cooles Projekt.
Ich finde Marimo großartig. Mich würde interessieren, ob in Markdown eine Unterstützung für mermaid.js in Betracht gezogen wird.
Ich bin Fan von Akshay und Myles, den Gründern von Marimo, und hoffe, dass ein Konkurrent zu Jupyter dem Ökosystem wissenschaftlicher Tools guttun wird.
Ich denke, Quarto löst viele der in diesem Thread angesprochenen Probleme von Jupyter. Auch bei den NIH wird der Einsatz von Quarto empfohlen und es werden Schulungen dazu angeboten.
Dass dieselbe Variable mehrfach definiert wird, ist ein Fehler. Der Grund dafür ist offensichtlich. Wenn sie aber nur in der Zelle verwendet wird, in der sie erstmals genutzt wird, sollte eine Wiederverwendung des Variablennamens möglich sein.