Сегодняшний рассказ про marimo - реактивный блокнот для Python, который многие уже называют заменой Jupyter 👀
🤔 Что это вообще такое?
Если коротко - как Jupyter, только лучше.
Помните, этот вечный ужас, когда прогнали ячейки не по порядку, а потом непонятно, в каком состоянии сейчас ноутбук?
Здесь такого точно не случится - и это главная фишка marimo, которую называют реактивность: когда вы меняете переменную в одной ячейке, он сам автоматически пересчитывает все остальные ячейки, которые от неё зависят.
🤔 Какие ещё плюсы?
Зацепило ещё несколько моментов:
• Ноутбук хранится как обычный .py файл, а не как огромный json - а значит, git наконец-то будет нормально показывать различия.
• Никакого скрытого состояния - удаляете ячейку, и marimo вычищает её переменные из памяти автоматически.
• Встроенные интерактивные элементы управления - ползунки, выпадающие списки, таблицы. Например, двигаете ползунок прямо в ноутбуке - и связанные с ним вычисления пересчитываются.
• Тот же ноутбук можно развернуть как полноценное веб-приложение или запустить как обычный скрипт из командной строки.
• Есть нативная поддержка SQL - можно гонять запросы прямо по датафреймам и csv (под капотом DuckDB).
• Отлично дружит с ИИ-агентами - можно подключиться в пару кликов.
🤔 Как поставить?
Если по-минимуму:pip install marimo
А если хотите сразу со всеми наворотами (SQL-ячейки, ИИ-автодополнение, серверный рендеринг графиков), то:pip install "marimo[recommended]"
Дальше можете запустить обучающий ноутбук-туториал:marimo tutorial intro
Создать свой новый ноутбук:marimo edit notebook.py
Превратить его в веб-приложение:marimo run notebook.py
Ставить можно куда угодно - локально, на сервер, в любое окружение (отлично дружит с pip, uv, conda). А если совсем не хочется - есть molab, облачная версия в духе Google Colab, достаточно просто зарегистрироваться.
Кстати, переезжать со всем нажитым добром не придётся - старые Jupyter-ноутбуки конвертируются одной командой:marimo convert your_notebook.ipynb > your_notebook.py
🤔 Но было замечено и несколько минусов:
• Та самая реактивность поначалу непривычна - нельзя дважды определить одну переменную в разных ячейках, и переменные не должны ссылаться на то, что ещё не определено. Это сделано специально, но в первое время немного ломает мозг после Jupyter.
• Горячие клавиши и автодополнение работают иначе - придётся переучиваться.
• На GitHub ноутбук показывается как обычный .py, а не как красивый рендер с графиками. Удобно для код-ревью, но если вы привыкли делиться готовым ноутбуком "с картинками" прямо в репозитории - имейте в виду.
• Если ячейки тяжёлые и считаются долго, та самая реактивность может стать врагом... Но на этот случай есть ленивый режим - в нем marimo не пересчитывает всё сразу, а просто помечает ячейки как устаревшие.
🤔 Полезные ссылки:
• официальная документация: тык
• проект на GitHub: тык
• облачный molab: тык
В общем, штука и правда отличная, но надо привыкнуть. Кто уже пробовал marimo - делитесь впечатлениями✨
#mlops@data_easy
