前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jp notebook的大难题有人出手解决,值得关注

jp notebook的大难题有人出手解决,值得关注

作者头像
咋咋
发布2024-02-06 17:45:38
1090
发布2024-02-06 17:45:38
举报
文章被收录于专栏:数据大宇宙数据大宇宙

前言

用 python 做数据相关工作的,相信必定用过 jupyter notebook,前段时间就有人跟我吐槽,因为 jupyter notebook 的问题,差点丢掉工作。

类似下面的情况:

第二个单元格生成最终的数据,但是里面使用了第一个单元格定义的变量。好巧不巧,修改了第一个单元格内容并执行,却忘记执行第二个单元格。

这也是我经常需要提示自己,每次都要从头到尾执行一次。

这也是为什么这些环境中,每个单元格前面都有一个小数字,就是为了提醒你,这些单元格的执行次序。

但这现在已经不再是问题了。你能想象,当我执行第一个单元格的时候,第二个单元格会自动更新内容吗?

这就是 marimo,它并不是一个库,而是一个 python 平台。它不仅仅是自带响应式更新单元格数据。还能编写一些页面组件,让你更直接编写自己的数据报告页面。

我们来体验一下。


通过 pip 安装并启动:

代码语言:javascript
复制
pip install marimo -U && marimo tutorial intro

如无意外,能看到服务启动的信息:

浏览器也会自动打开了页面。

由于上面的命令是启动内置的模板,里面已经有了一些内容。

简单来介绍一些关键。

我们需要在 mariom 的服务页面上写 python 代码。导入它,后面用于创建页面元素。

mo.md 写入 markdown 内容。上方显示内容。

这也太普通了。弄一个能交互的东西吧

乍看之下,没什么作用。但是,现在可以在其他的单元格中使用定义的变量 slider :

  • 注意的是 slider.value 访问组件的值

现在,拖动下方的 slider,上方单元格的'叶子'也会显示相应的数量。

有趣吧。现在我们不再需要担心某些单元格因为个人疏忽忘记执行了。页面总是最新的可用的结果。

有人会说,这些还不够吸引我,如果能发给别人看就完美了。

接下来看看几种分发的方式。


打开右上角的按钮

选第二项,显然是导出一份静态的 html 文件。

此时如果浏览器打开后,还能联动,那就神了。

可想而知,静态文件导出,作用不是非常大。适合页面上没有交互的组件。

那么,能不能直接把代码文件发给别人,别人安装了 mariom 情况下,可以跑起来。这肯定是可以,并且与 jp notebook 很不一样的地方在于,mariom 生成的是普通的 python 代码文件。

在页面最上方可以看到当前的代码文件所在:

找到文件,我们可以复制到其他的地方:

  • 可以看到里面都是普通的 python 代码

那么怎么运行一个已经存在的 mariom 代码文件?

代码语言:javascript
复制
marimo run intro.py

执行命令即可。

命令 marimo edit intro.py 可以编辑状态打开文件

不过,这种方式只适合团队之间共享。还有其他的方式吗?

很自然想到的是发布成 web 。


会很复杂吗?其实你可能早就做到了。在前面的例子,当我们运行 marimo ,可以看到控制台输出的一段信息:

其实本身就已经是一个 web。

不要忘记一键三连。你的点赞、收藏、关注,是我创作的动力。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档