README_Chinese.md
<a href="https://github.com/marimo-team/marimo/blob/main/LICENSE"></a>
</p>Marimo 是一款响应式 Python 笔记本:运行单元格可与 UI 元素交互,marimo 会自动更新依赖于它的单元格(或将其<a href="#expensive-notebooks">标记为过时单元格</a>),从而保持代码和输出的一致性。marimo 笔记本以纯 Python 格式存储,可作为脚本执行,也可作为应用程序部署。
为什么选择 marimo
jupyter、streamlit、jupytext、ipywidgets、papermill 等更多工具.py文件格式存储pip install marimo && marimo tutorial intro
在我们的在线体验平台试用marimo,完全在浏览器中运行!
跳转到快速入门了解我们的命令行工具。
Marimo 确保了您的代码、输出和程序的状态始的一致性,解决了与 Jupyter 等传统笔记本相关的许多问题。
独有的响应式设计 运行一个单元格,marimo 就会自动运行引用其变量的单元格,从而避免了手动重新运行单元格这一容易出错的工作。删除单元格,marimo 会从程序内存中删除其变量,消除隐藏状态。
<a name="expensive-notebooks"></a>
兼容计算密集型笔记本。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 可视化工具 (示例视频):
<table border="0"> <tr> <td> <a target="_blank" href="https://docs.marimo.io/getting_started/key_concepts.html"> </a>
</td>
<td>
<a target="_blank" href="https://docs.marimo.io/api/inputs/index.html">
</a>
</td>
<td>
<a target="_blank" href="https://docs.marimo.io/guides/working_with_data/plotting.html">
</a>
</td>
<td>
<a target="_blank" href="https://docs.marimo.io/api/layouts/index.html">
</a>
</td>
</a>
</td>
<td>
<a target="_blank" href="https://marimo.app/l/0ue871">
</a>
</td>
<td>
<a target="_blank" href="https://marimo.app/l/lxp1jk">
</a>
</td>
<td>
<a target="_blank" href="https://marimo.app/l/14ovyr">
</a>
</td>
我们感谢所有人的贡献! 这是为所有人设计的工具,我们真挚的欢迎任何人的任何意见! 请参阅CONTRIBUTING.md 获取更多信息,了解如何参与到这个项目中来。
有问题?请在Discord上联系我们。
我们也正在建设 marimo 社区,来和我们一起玩吧!
marimo 是对 Python 笔记本的重塑,它是一个可复制、可交互、可共享的 Python 程序,而不是容易出错的 JSON 便笺。
我们相信,我们使用的工具会影响我们的思维方式--更好的工具,造就更好的思维。我们希望通过 marimo 为 Python 社区提供一个更好的编程环境,以便进行研究和交流;进行代码实验和分享;学习计算科学和教授计算科学。
我们的灵感来自于很多已有的项目, 特别是 Pluto.jl, ObservableHQ,和 Bret Victor's essays。 marimo 是向响应式数据流编程迈进的一大步。从 IPyflow,streamlit, TensorFlow, PyTorch, JAX,到 React,函数式、声明式和响应式编程的理念正在改善一系列工具。
<p align="right"> </p>