在 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 来选择在应用中包含代码单元格。
其他资源和支持
故障排除
如果遇到问题:
- 确保你的 notebook 使用
marimo run app.py在本地以应用模式运行 - 检查所有必需的包是否都列在
requirements.txt中 - 验证端口配置是否匹配(7860 是 Spaces 的默认值)
- 检查 Space 日志中的任何 Python 错误
如需更多帮助,请访问 marimo Discord 或提交问题。