Skip to main content

在 Spaces 上使用 marimo

marimo 是一个响应式 Python notebook,将 notebook 建模为数据流图。当你运行单元格或与 UI 元素交互时,marimo 会自动运行受影响的单元格(或将它们标记为过时),保持代码和输出一致,并在错误发生之前防止它们。每个 marimo notebook 都存储为纯 Python,可作为脚本执行,并可作为应用部署。

主要功能:

  • ⚡️ 响应式: 运行一个单元格,marimo 会响应式运行所有依赖的单元格或将它们标记为过时
  • 🖐️ 交互式: 将滑块、表格、图表等绑定到 Python — 无需回调
  • 🔬 可重现: 无隐藏状态,确定性执行,内置包管理
  • 🏃 可执行: 作为 Python 脚本执行,通过 CLI 参数参数化
  • 🛜 可分享: 部署为交互式 Web 应用或幻灯片,通过 WASM 在浏览器中运行
  • 🛢️ 为数据设计: 使用 SQL 查询数据框和数据库,过滤和搜索数据框

在 Spaces 上部署 marimo 应用

要在 Spaces 上开始使用 marimo,请点击下面的按钮:

这将使用 marimo 的 Docker 模板开始构建你的 Space。如果成功,你应该看到类似于 marimo 介绍 notebook 的应用。

自定义你的 marimo 应用

当你创建 marimo Space 时,你将获得一些关键文件以帮助你开始:

1. app.py

这是你的主要 marimo notebook 文件,定义你的应用逻辑。marimo notebook 是使用 @app.cell 装饰器定义单元格的纯 Python 文件。要了解有关构建 notebook 和应用的更多信息,请参阅 marimo 文档。随着应用的扩展,你可以将代码组织到模块中并将它们导入到主 notebook 中。

2. Dockerfile

marimo 应用的 Dockerfile 非常简单,因为 marimo 几乎没有系统依赖。关键要求是:

  • 它安装 requirements.txt 中列出的依赖(使用 uv
  • 它创建一个非 root 用户以确保安全
  • 它使用 marimo run app.py 运行应用

如果你的应用需要额外的系统依赖、权限或其他 CLI 标志,你可能需要修改此文件。

3. requirements.txt

Space 将自动安装 requirements.txt 文件中列出的依赖。至少,你必须在此文件中包含 marimo。你将需要添加应用所需的任何其他包。

marimo Space 模板提供了一个基本设置,你可以根据需要进行扩展。部署后,你的 notebook 将在"应用模式"下运行,这会隐藏代码单元格并仅显示交互式输出 - 非常适合与最终用户分享。你可以通过在 Dockerfile 中的 marimo run 命令中添加 --include-code 来选择在应用中包含代码单元格。

其他资源和支持

故障排除

如果遇到问题:

  1. 确保你的 notebook 使用 marimo run app.py 在本地以应用模式运行
  2. 检查所有必需的包是否都列在 requirements.txt
  3. 验证端口配置是否匹配(7860 是 Spaces 的默认值)
  4. 检查 Space 日志中的任何 Python 错误

如需更多帮助,请访问 marimo Discord提交问题