24

我想创建一个交互式 JupyterLab Notebook 应用程序,我需要创建一系列自定义 Widget。于是我开始研究这件事,越看越糊涂。为了简单起见,我会问一些简单的问题:

  1. 在 Jupyter Notebooks 上使用小部件的最常见方法之一是使用 ipywidgets 库。正确的?
  2. 与经典 Notebook 不同,JupyterLab 的 Notebook 无法直接渲染 JavaScript。因此,ipywidgets 文档中有关自定义小部件创建的教程无法在 JupyterLab 上运行。正确的?
  3. 如果有人想在 JupyterLab 的 Notebook 上运行 JavaScript,她或他将不得不通过扩展来实现。如果是 ipywidgets,则必须安装 @jupyter-widgets/jupyterlab-manager。正确的?
  4. 如果您想使用 ipywidgets 库编写自定义小部件,可以使用两个 GitHub 项目作为起点:widget-cookiecutter 和 widget-ts-cookiecutter。据我了解,前者基于 JavaScript,后者基于 TypeScript。此外,第一个似乎对某些类型不活跃,而第二个更活跃。JupyterWidgets 团队是否计划专注于 TypeScript?我应该关注哪一个?
  5. cookiecutter 项目并没有真正的文档。我真的很困惑,很难理解他们的代码。当然,我可以复制粘贴它们并开始搞乱,直到我弄清楚整个事情是如何工作的以及代码中的“钩子”或“入口点”是什么,但如果有人能给我一些额外的指针,我将不胜感激.
  6. JupyterWidgets 是 Jupyter 项目的“官方”项目吗?鉴于项目中的成员数量非常少,我想知道将我的工作基于 ipywidgets 有多安全。请记住,“DeclarativeWidgets”项目早就放弃了。
  7. 是否有其他库实现了比 ipywidgets 中更多的小部件并且也在 JupyterLab 上运行?
  8. 我想为服务器端数据处理创建一个 Web 应用程序。我最初的目标是创建一个不期望用户进行任何编码的应用程序/服务,并通过使用 html/JavaScript 小部件来执行所有操作。这可以使用 Angular/React 前端和 Python/Django/Flask 后端来实现。但是,后来,我意识到在某些情况下,用户可能希望在服务器上进行一些额外的自定义/任意处理。这就是我考虑使用 JupyterLab 的原因。我想知道这是否是最好的,是否有可能只创建一个普通的 Angular/Python 字体/后端,并以某种方式将其包装在一个 JupyterLab 扩展中,该扩展将提供一种访问数据的机制app/service 并将其带到 notebook 进行进一步处理。

提前致谢

4

2 回答 2

9

一般来说,stackoverflow 问题应该尝试一次只问一个问题。话虽如此,我会尽力回答问题:

  1. ipywidgets 是主要方式,是的。这就是人们谈论笔记本小部件时的意思。
  2. 在 jupyterlab repo 上的 jupyterlab 中有一个跟踪一般 JS 的问题。
  3. @jupyter-widgets/jupyterlab-manager是 jupyterlab 的小部件,是的,但你仍然需要 ipywidgets 中的 python 代码。有关详细信息,请参阅http://ipywidgets.readthedocs.io/en/stable/user_install.html
  4. 虽然确实一个是 JS,另一个是 TS,但 TS 也有所有的花里胡哨。因此它也更复杂。JS 更简单,因此可能更适合理解最重要的部分。
  5. 我同意两者都可以使用更好的文档!我一直想这样做一段时间。实现这一点的最佳方法可能是在各个存储库上打开带有特定问题的问题,并建议将解释放入自述文件或类似文件中。这样你就可以确保你的痛点得到解决。
  6. 鉴于小部件的庞大用户群,我认为它是安全的。虽然总线因素不是很高,但如果维护人员减少,人们往往会加强。
  7. 是的,但是对于开发人员和用户来说,使用 jupyterlab 的小部件仍然需要稍高的维护。
  8. 您可能想要研究的是Comms( http://jupyter-notebook.readthedocs.io/en/stable/comms.html ),这是小部件在后台使用的同步内容。虽然这是较低级别,因此您必须判断哪个最适合您。
于 2017-12-15T14:25:38.767 回答
3

首先,请记住 JupyterLab 还不稳定,内部 API 仍在发生很大变化。您最沮丧的部分是试图找到有关每周都在变化的项目的信息(应该在 2018 年初稳定以供参考)。

这导致为用户编写文档和示例的工作量最少,因为无论如何文档在一周后都会出错。所以你现在的困惑和缺乏活动是正常的。

一旦 Lab 稳定下来并且 IPywidget 团队开始移植所有内容,您应该会看到改进。

于 2017-12-15T10:40:00.393 回答