反应式 Python 笔记本,可重复、git 友好且可部署为脚本或应用程序。
文档· Discord ·示例
英语 |简体中文
marimo是一个反应式 Python 笔记本:运行单元格或与 UI 元素交互,marimo 自动运行依赖单元格(或将它们标记为过时),保持代码和输出一致。 marimo 笔记本以纯 Python 形式存储,可以作为脚本执行,也可以作为应用程序部署。
亮点。
jupyter
、 streamlit
、 jupytext
、 ipywidgets
、 papermill
等.py
文件 pip install marimo & & marimo tutorial intro
在我们的在线游乐场尝试 marimo,它完全在浏览器中运行!
跳转到快速入门,了解我们的 CLI 入门知识。
marimo 保证您的笔记本代码、输出和程序状态保持一致。这解决了与 Jupyter 等传统笔记本相关的许多问题。
反应式编程环境。运行一个单元,marimo 会通过自动运行引用其变量的单元来做出反应,从而消除了手动重新运行单元的容易出错的任务。删除一个单元格后,marimo 会从程序内存中清除其变量,从而消除隐藏状态。
兼容昂贵的笔记本电脑。 marimo 允许您将运行时配置为惰性,将受影响的单元标记为过时而不是自动运行它们。这可以保证程序状态,同时防止意外执行昂贵的单元。
同步的 UI 元素。与滑块、下拉菜单、数据框转换器和聊天界面等 UI 元素进行交互,使用它们的单元格会自动以其最新值重新运行。
交互式数据框。快速翻页、搜索、过滤和排序数百万行,无需任何代码。
高性能的运行时。 marimo 仅运行那些需要通过静态分析代码来运行的单元。
动态 Markdown 和 SQL。使用 Markdown 讲述依赖于 Python 数据的动态故事。或者构建依赖于 Python 值的 SQL 查询,并使用我们内置的 SQL 引擎对数据框、数据库、CSV、Google Sheets 或其他任何内容执行查询,该引擎将结果作为 Python 数据框返回。
你的笔记本仍然是纯 Python,即使它们使用 Markdown 或 SQL。
确定性的执行顺序。笔记本按照确定的顺序执行,基于变量引用而不是页面上单元格的位置。整理你的笔记本,以最适合你想要讲述的故事。
内置包管理。 marimo 内置了对所有主要包管理器的支持,让您可以在导入时安装包。 marimo 甚至可以序列化笔记本文件中的包要求,并自动将它们安装在隔离的 venv 沙箱中。
含电池。 marimo 配备了 GitHub Copilot、AI 助手、Ruff 代码格式化、HTML 导出、快速代码完成、VS Code 扩展、交互式数据帧查看器以及更多生活质量功能。
安装。在终端中,运行
pip install marimo # or conda install -c conda-forge marimo
marimo tutorial intro
创建笔记本。
创建或编辑笔记本
marimo edit
运行应用程序。将笔记本作为 Web 应用程序运行,Python 代码隐藏且不可编辑:
marimo run your_notebook.py
作为脚本执行。在命令行中将笔记本作为脚本执行:
python your_notebook.py
自动转换 Jupyter 笔记本。使用 CLI 自动将 Jupyter 笔记本转换为 marimo 笔记本
marimo convert your_notebook.ipynb > your_notebook.py
或使用我们的网络界面。
教程。列出所有教程:
marimo tutorial --help
请参阅我们文档中的常见问题解答。
marimo 很容易上手,为高级用户提供了很大的空间。例如,这是一个用 marimo 制作的嵌入可视化工具(视频):
查看我们的文档、 examples/
文件夹和我们的图库以了解更多信息。
教程 | 输入 | 地块 | 布局 |
我们感谢所有的贡献!您无需成为专家即可提供帮助。请参阅 CONTRIBUTING.md 了解有关如何开始的更多详细信息。
问题?在 Discord 上联系我们。
我们正在建立一个社区。来和我们一起出去玩吧!
marimo 是对 Python 笔记本的重新发明,作为可复制、交互式和可共享的 Python 程序,而不是容易出错的 JSON 便签本。
我们相信,我们使用的工具塑造了我们的思维方式——更好的工具,带来更好的思维。通过marimo,我们希望为Python社区提供更好的编程环境来进行研究和交流;试验代码并分享;学习计算科学并教授它。
我们的灵感来自许多地方和项目,尤其是 Pluto.jl、ObservableHQ 和 Bret Victor 的文章。 marimo 是响应式数据流编程更大运动的一部分。从 IPyflow、streamlit、TensorFlow、PyTorch、JAX 和 React,函数式、声明式和反应式编程的思想正在使各种工具变得更好。