Marimo - Notebook reactivo de código abierto para Python
(github.com/marimo-team)- Un notebook para experimentar rápidamente con datos y modelos
- Ejecución por celdas, cálculo automático y actualizaciones
- Siempre se puede volver a ejecutar sin estado oculto
- Se guarda como archivo de Python, por lo que es amigable con Git
- Permite convertir notebooks en pipelines o desplegarlos como apps web interactivas
Entorno de programación reactivo
- marimo garantiza la consistencia entre el código del notebook, la salida y el estado del programa.
- Al ejecutar una celda, marimo actualiza automáticamente las celdas que hacen referencia a esa variable, evitando errores por tener que volver a ejecutar celdas manualmente.
- Al eliminar una celda, marimo quita esas variables de la memoria del programa, eliminando el estado oculto.
- Los notebooks se ejecutan en un orden determinista basado en las referencias de variables, sin depender de la posición de las celdas en la página.
- Al interactuar con elementos de UI como sliders, menús desplegables y transformadores de dataframes, las celdas que usan esos valores se vuelven a ejecutar automáticamente con los valores más recientes.
- marimo analiza el código de forma estática y ejecuta solo las celdas necesarias, mejorando el rendimiento.
- marimo incluye varias funciones prácticas como GitHub Copilot, formateo de código con Black, exportación a HTML, autocompletado rápido de código y una extensión para VS Code.
Inicio rápido
- Instalación: instala marimo ejecutando
pip install marimooconda install -c conda-forge marimoen la terminal. - Crear un notebook: crea un notebook vacío con
marimo editory edita un notebook con un nombre específico usandomarimo edit your_notebook.py. - Ejecutar la app: ejecuta
marimo run your_notebook.pypara correr el notebook como una app web. Esta app se despliega en la nube de marimo. - Ejecutar como script: ejecuta
python your_notebook.pypara correr un notebook de marimo como script. - Conversión automática de notebooks de Jupyter: usa la CLI para convertir automáticamente notebooks de Jupyter a notebooks de marimo.
- Tutoriales: ejecuta
marimo tutorial --helppara listar todos los tutoriales.
Más información
- marimo permite que incluso los principiantes empiecen fácilmente y ofrece diversas funciones para usuarios avanzados.
- Por ejemplo, puedes ver la herramienta de visualización de embeddings (video) creada con marimo.
- Puedes obtener más información a través de la documentación, la carpeta
examples/y la galería.
Inspiración
- marimo reinventa los notebooks de Python como programas de Python reproducibles, interactivos y compartibles.
- Con la convicción de que las herramientas que usamos moldean nuestra forma de pensar, espera ofrecer un mejor entorno de programación a la comunidad de Python.
- Toma inspiración de muchos lugares y proyectos, como Pluto.jl, ObservableHQ y los ensayos de Bret Victor.
- marimo forma parte de un movimiento más amplio de programación reactiva de flujo de datos, donde las ideas de programación funcional, declarativa y reactiva mejoran diversas herramientas como IPyflow, streamlit, TensorFlow, PyTorch, JAX y React.
Opinión de GN⁺
- marimo es un innovador notebook reactivo de Python que busca superar las limitaciones de herramientas existentes como Jupyter Notebook, permitiendo experimentar con datos y modelos, tener confianza en la exactitud del notebook y convertirlo en un pipeline o en una app web interactiva lista para producción.
- Esta herramienta pone énfasis en la consistencia y reproducibilidad del código, y mejora la experiencia de programación al simplificar la interacción con elementos de interfaz de usuario.
- marimo facilita la colaboración y el intercambio en áreas como ciencia de datos, investigación y educación, y ofrece una plataforma que fomenta la interacción entre usuarios y el intercambio de conocimiento mediante la construcción de comunidad.
1 comentarios
Comentarios en Hacker News
Como usuario de notebooks de Jupyter y Observable, sentía la falta de reactividad entre celdas en Observable, y creo que esto resuelve muy bien ese problema. Me gusta que el formato de archivo de Marimo sea Python, y también me agrada la licencia Apache 2. Me impresionó descubrir la función de GitHub Copilot.
Al trabajar con colaboradores que usan Jupyter Notebook, la configuración del entorno y el estado oculto de Jupyter eran un problema. Este proyecto intenta resolver el segundo, pero sacrifica flexibilidad. Si se prioriza la reproducibilidad, puede ser un compromiso aceptable.
requirements.txtes la solución estándar para otro problema, pero es incómodo de usar.requirements.txty espera una mejor solución.Por fin me alegra que alguien esté haciendo esto. Hay una extensión para Vscode, pero es una lástima que abra una vista completa en el navegador en lugar de usar la interfaz de notebooks existente de Vscode. Comparte sus ideas sobre la gestión de paquetes y el despliegue de código en producción.
Tengo algunas preguntas sobre la plataforma: quisiera una explicación sobre los widgets interactivos y la dependencia e interacción con el ecosistema de Jupyter.
Creo que la extensión Jupytext está subestimada. Resuelve los problemas de interacción de Jupyter con git y las malas prácticas de programación que dificultan escribir archivos de biblioteca. Espero que las actualizaciones reactivas del nuevo proyecto sean útiles para principiantes o para proyectos complejos.
La lista de dependencias es corta y, aparte de tornado, no arrastra muchas dependencias adicionales pesadas. Parece un proyecto muy útil y genial.
Marimo me parece excelente. Me pregunto si se está considerando agregar soporte para mermaid.js en markdown.
Soy fan de Akshay y Myles, los creadores de Marimo, y espero que aparezca un competidor para Jupyter, porque eso tendrá un buen impacto en el ecosistema de herramientas científicas.
Creo que Quarto resuelve muchos de los problemas de Jupyter mencionados en este hilo. Incluso en los NIH recomiendan usar Quarto y ofrecen capacitación.
Definir la misma variable varias veces es un error. La razón es obvia. Pero si solo se usa en la celda donde aparece por primera vez, debería ser posible reutilizar el nombre de la variable.