用 python 做数据相关工作的,相信必定用过 jupyter notebook,前段时间就有人跟我吐槽,因为 jupyter notebook 的问题,差点丢掉工作。
类似下面的情况:
第二个单元格生成最终的数据,但是里面使用了第一个单元格定义的变量。好巧不巧,修改了第一个单元格内容并执行,却忘记执行第二个单元格。
这也是我经常需要提示自己,每次都要从头到尾执行一次。
这也是为什么这些环境中,每个单元格前面都有一个小数字,就是为了提醒你,这些单元格的执行次序。
但这现在已经不再是问题了。你能想象,当我执行第一个单元格的时候,第二个单元格会自动更新内容吗?
这就是 marimo,它并不是一个库,而是一个 python 平台。它不仅仅是自带响应式更新单元格数据。还能编写一些页面组件,让你更直接编写自己的数据报告页面。
我们来体验一下。
通过 pip 安装并启动:
pip install marimo -U && marimo tutorial intro
如无意外,能看到服务启动的信息:
浏览器也会自动打开了页面。
由于上面的命令是启动内置的模板,里面已经有了一些内容。
简单来介绍一些关键。
我们需要在 mariom 的服务页面上写 python 代码。导入它,后面用于创建页面元素。
mo.md 写入 markdown 内容。上方显示内容。
这也太普通了。弄一个能交互的东西吧
乍看之下,没什么作用。但是,现在可以在其他的单元格中使用定义的变量 slider :
现在,拖动下方的 slider,上方单元格的'叶子'也会显示相应的数量。
有趣吧。现在我们不再需要担心某些单元格因为个人疏忽忘记执行了。页面总是最新的可用的结果。
有人会说,这些还不够吸引我,如果能发给别人看就完美了。
接下来看看几种分发的方式。
打开右上角的按钮
选第二项,显然是导出一份静态的 html 文件。
此时如果浏览器打开后,还能联动,那就神了。
可想而知,静态文件导出,作用不是非常大。适合页面上没有交互的组件。
那么,能不能直接把代码文件发给别人,别人安装了 mariom 情况下,可以跑起来。这肯定是可以,并且与 jp notebook 很不一样的地方在于,mariom 生成的是普通的 python 代码文件。
在页面最上方可以看到当前的代码文件所在:
找到文件,我们可以复制到其他的地方:
那么怎么运行一个已经存在的 mariom 代码文件?
marimo run intro.py
执行命令即可。
命令 marimo edit intro.py 可以编辑状态打开文件
不过,这种方式只适合团队之间共享。还有其他的方式吗?
很自然想到的是发布成 web 。
会很复杂吗?其实你可能早就做到了。在前面的例子,当我们运行 marimo ,可以看到控制台输出的一段信息:
其实本身就已经是一个 web。
不要忘记一键三连。你的点赞、收藏、关注,是我创作的动力。