Jupyter: 嵌入实时交互式小部件

17
根据Jupyter博客这里的介绍,现在可以在静态网页中嵌入交互式小部件:

通过插入包含序列化小部件状态的HTML片段,可以将实时交互式小部件嵌入到静态网页或博客中。这也适用于自定义小部件库。请参见http://jupyter.org/embed-jupyter-widgets.html

当我在Firefox或Chrome中打开上面的示例时,我可以正常获取交互式小部件!
然而,如果我使用相同的Python代码创建一个新的笔记本电脑,将笔记本电脑保存为HTML,然后复制粘贴可嵌入的HTML片段以呈现交互式小部件,它就无法工作。最多只能获得小部件状态的图像,但没有任何交互性。
是否有人成功复制了带有交互式小部件的HTML页面?我错过了什么吗?

你最终解决了这个问题吗? - James Draper
不,这仍然是一个未解决的问题!我也尝试过binder:http://mybinder.org/。小部件在binder中也没有显示(虽然这是另一个问题)。但如果可能的话,我更喜欢将小部件嵌入html中... - Ely
真遗憾。如果小部件在静态实现中无法与最终用户“交互”,那么这有点违背了它们存在的全部目的。 - James Draper
你有没有阅读过ipywidgets 7的最新文档?这可能会帮助你弄清楚。https://ipywidgets.readthedocs.io/en/latest/embedding.html - Vidar
@vidar 谢谢,看起来很有用!我不得不暂停这个项目一段时间,但我会在有时间的时候尝试 :) - Ely
2个回答

5
我们专门为此开发了Kyso。您可以使用kyso.io将Jupyter笔记本嵌入网站中,只要BokehJS仪表板支持小部件,笔记本就会交互式显示。这里有一个示例
附注:(免责声明-我是Kyso的创始人)

示例链接已损坏。 - Robbie Capps

2

这个问题被问了很长时间,但我会用今天的技术来回答。

为了嵌入交互式小部件,您需要一个后端,但有一个名为MyBinder的项目可以免费在云中用作后端。这被用作一个名为NBinteract的库的基础,该库可以将任何带有交互式小部件的笔记本转换为单个HTML网页。

这些HTML从cdn加载脚本,并自行管理与MyBinder的所有交互。

他们的网站上有一些示例,我还发布了一篇博客文章,其中我使用了这项技术以及Dockerfile、ffmpeg、matplotlib、动画和交互式小部件。因此,我认为这种方法非常强大和灵活。

官方文档说您需要一个repo,但我可以设法使用gists代替,并提交了一个问题在主要repo中解释如何做到这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接