Skip to content

Latest commit

 

History

History
264 lines (201 loc) · 13.9 KB

File metadata and controls

264 lines (201 loc) · 13.9 KB

这是一款响应式的Python笔记本,具有优秀的可复现性,原生支持Git,并可作为脚本或应用程序部署。

用户手册 · Discord 社区 · 示例 · 展示廊 · YouTube

English | 繁體中文 | 简体中文 | 日本語 | Español

discord Pepy Total Downloads Conda Downloads

Marimo 是一款响应式 Python 笔记本:运行单元格可与 UI 元素交互,marimo 会自动更新依赖于它的单元格(或将其标记为过时单元格),从而保持代码和输出的一致性。marimo 笔记本以纯 Python 格式存储,可作为脚本执行,也可作为应用程序部署。

为什么选择 marimo

pip install marimo && marimo tutorial intro

在我们的在线体验平台试用marimo,完全在浏览器中运行!

跳转到快速入门了解我们的命令行工具。

响应式编程环境

Marimo 确保了您的代码、输出和程序的状态始的一致性,解决了与 Jupyter 等传统笔记本相关的许多问题

独有的响应式设计 运行一个单元格,marimo 就会自动运行引用其变量的单元格,从而避免了手动重新运行单元格这一容易出错的工作。删除单元格,marimo 会从程序内存中删除其变量,消除隐藏状态。

兼容计算密集型笔记本。marimo允许您将运行时配置为延迟模式,将受影响的单元格标记为过时而不是自动运行它们。这既能保证程序状态的完整性,又能防止意外执行计算密集型单元格。

同步的UI元素。与UI元素滑块下拉菜单数据框转换器聊天界面交互时,使用它们的单元格会自动以最新值重新运行。

交互式数据框分页浏览、搜索、过滤和排序数百万行数据,极速运行,无需编写代码。

高效运行时。marimo通过静态分析代码,只运行需要运行的单元格。

动态Markdown和SQL。使用Markdown创建依赖Python数据的动态文档。或者构建依赖Python值的SQL查询,并针对数据框、数据库、CSV、Google Sheets或其他数据源执行,使用我们内置的SQL引擎将结果作为Python数据框返回。

即使使用了Markdown或SQL,您的笔记本仍然是纯Python代码。

确定性执行顺序。笔记本按照基于变量引用而非单元格页面位置的确定性顺序执行。您可以根据想要讲述的故事组织笔记本。

内置包管理。marimo内置支持所有主要的包管理器,允许您在导入时安装包。marimo甚至可以序列化包依赖到笔记本文件中,并在隔离的venv沙箱中自动安装它们。

功能齐全。marimo集成了GitHub Copilot、AI助手、Ruff代码格式化、HTML导出、快速代码补全、VS Code扩展、交互式数据框查看器和更多便捷功能。

快速起步

安装 在终端运行以下代码:

pip install marimo  # or conda install -c conda-forge marimo
marimo tutorial intro

要安装包含额外依赖项的版本(启用SQL单元格、AI补全等功能),运行:

pip install marimo[recommended]

创建新的笔记本

使用以下命令创建或编辑笔记本

marimo edit

运行应用 将笔记本作为Web应用运行,隐藏并锁定Python代码:

marimo run your_notebook.py

作为脚本执行 在命令行中将笔记本作为脚本执行:

python your_notebook.py

自动转换已有的 Jupyter 笔记本 通过命令行将 Jupyter 笔记本自动转换为 marimo 格式的笔记本

marimo convert your_notebook.ipynb > your_notebook.py

对此,我们也有在线工具可供使用。

教程 列出所有的可用教程:

marimo tutorial --help

如果你有一些问题?

请参阅我们文档中的FAQ部分。

更多信息

Marimo 很容易上手,为高级用户提供了很大的空间。 例如,这是一个用 marimo 制作的 embedding 可视化工具 (示例视频):

查看我们的文档使用示例展示廊了解更多。

教程 输入控件 绘图 布局

贡献

我们感谢所有人的贡献! 这是为所有人设计的工具,我们真挚的欢迎任何人的任何意见! 请参阅CONTRIBUTING.md 获取更多信息,了解如何参与到这个项目中来。

有问题?请在Discord上联系我们

社区

我们也正在建设 marimo 社区,来和我们一起玩吧!

愿景 ✨

marimo 是对 Python 笔记本的重塑,它是一个可复制、可交互、可共享的 Python 程序,而不是容易出错的 JSON 便笺。

我们相信,我们使用的工具会影响我们的思维方式--更好的工具,造就更好的思维。我们希望通过 marimo 为 Python 社区提供一个更好的编程环境,以便进行研究和交流;进行代码实验和分享;学习计算科学和教授计算科学。

我们的灵感来自于很多已有的项目, 特别是 Pluto.jlObservableHQ,和 Bret Victor's essays。 marimo 是向响应式数据流编程迈进的一大步。从 IPyflowstreamlitTensorFlowPyTorchJAX,到 React,函数式、声明式和响应式编程的理念正在改善一系列工具。