与 Jupyter Notebook、Lab、extensions 和 ipywidgets 混淆
Posted
技术标签:
【中文标题】与 Jupyter Notebook、Lab、extensions 和 ipywidgets 混淆【英文标题】:Really confused with Jupyter Notebook, Lab, extensions, and ipywidgets 【发布时间】:2018-05-29 07:06:45 【问题描述】:我想创建一个交互式 JupyterLab Notebook 应用程序,我需要创建一系列自定义 Widget。于是我开始研究这件事,越看越糊涂。为了简单起见,我会问一些简单的问题:
-
在 Jupyter Notebooks 上使用小部件的最常见方法之一是使用 ipywidgets 库。对吧?
与经典 Notebook 不同,JupyterLab 的 Notebook 无法直接渲染 javascript。因此,ipywidgets 文档中有关自定义小部件创建的教程无法在 JupyterLab 上运行。对吧?
如果想在 JupyterLab 的 Notebook 上运行 JavaScript,她或他必须通过扩展来实现。如果是 ipywidgets,则必须安装 @jupyter-widgets/jupyterlab-manager。对吧?
如果您想使用 ipywidgets 库编写自定义小部件,可以使用两个 GitHub 项目作为起点:widget-cookiecutter 和 widget-ts-cookiecutter。据我了解,前者基于 JavaScript,后者基于 TypeScript。此外,第一个似乎对某些类型不活跃,而第二个更活跃。 JupyterWidgets 团队是否计划专注于 TypeScript?我应该关注哪一个?
cookiecutter 项目并没有真正的文档。我真的很困惑,很难理解他们的代码。当然,我可以复制粘贴它们并开始搞乱,直到我弄清楚整个事情是如何工作的以及代码中的“钩子”或“入口点”是什么,但如果有人能给我一些额外的指针,我将不胜感激.
JupyterWidgets 是 Jupyter 项目的“官方”项目吗?鉴于项目中的成员数量非常少,我想知道将我的工作基于 ipywidgets 有多安全。请记住,“DeclarativeWidgets”项目早已放弃。
是否还有其他库可以实现比 ipywidgets 中更多的小部件,并且还可以在 JupyterLab 上运行?
我想创建一个用于服务器端数据处理的 Web 应用程序。我最初的目标是创建一个不期望用户进行任何编码的应用程序/服务,并通过使用 html/JavaScript 小部件来执行所有操作。这可以使用 Angular/React 前端和 Python/Django/Flask 后端来实现。但是,后来,我意识到在某些情况下,用户可能希望在服务器上进行一些额外的自定义/任意处理。这就是我考虑使用 JupyterLab 的原因。我想知道这是否是最好的,是否有可能只创建一个普通的 Angular/Python 字体/后端,并以某种方式将其包装在一个 JupyterLab 扩展中,该扩展将提供一种机制来访问来自这个的数据应用程序/服务并将其带到笔记本中进行进一步处理。
提前致谢
【问题讨论】:
【参考方案1】:一般来说,*** 问题应该尝试一次只问一个问题。话虽如此,我会尽力回答问题:
-
ipywidgets 是主要方式,是的。这就是人们谈论笔记本小部件时的意思。
在 jupyterlab 存储库上的 jupyterlab 中跟踪一般 JS 存在问题。
@jupyter-widgets/jupyterlab-manager
是 jupyterlab 的小部件,是的,但您仍然需要 ipywidgets 中的 python 代码。详情请见http://ipywidgets.readthedocs.io/en/stable/user_install.html。
虽然确实一个是 JS,另一个是 TS,但 TS 也有所有的花里胡哨。因此它也更复杂。 JS 更简单,因此可能更适合理解最重要的部分。
我同意两者都可以使用更好的文档!我一直想这样做一段时间。实现这一点的最佳方法可能是在各个存储库中打开带有特定问题的问题,并建议将解释放入自述文件或类似文件中。这样您就可以确保解决您的痛点。
鉴于小部件的庞大用户群,我认为它是安全的。虽然总线因素不是很高,但如果维护人员减少,人们往往会加强。
是的,但是对于开发人员和用户来说,使用 jupyterlab 小部件的维护成本仍然略高。
您可能想要研究的是Comms
(http://jupyter-notebook.readthedocs.io/en/stable/comms.html),这是小部件在后台用于同步的内容。不过这是较低的级别,因此您必须判断哪个最适合您。
【讨论】:
【参考方案2】:首先,请记住 JupyterLab 还不稳定,内部 API 仍在发生很大变化。您最沮丧的部分是试图找到有关每周都在变化的项目的信息(应该在 2018 年初稳定下来以供参考)。
这导致为用户编写文档和示例的工作量最少,因为无论如何文档在一周后就会出错。所以你现在的困惑和缺乏活动是正常的。
一旦 Lab 稳定下来并且 IPywidget 团队开始移植所有你应该看到改进的东西。
【讨论】:
以上是关于与 Jupyter Notebook、Lab、extensions 和 ipywidgets 混淆的主要内容,如果未能解决你的问题,请参考以下文章
Jupyter Lab 中的 Jupyter Notebook 扩展
Python tqdm 导入检查 jupyter notebook 或 lab 是不是正在运行