真的与 Jupyter Notebook、Lab、扩展和 ipywidgets 混淆了

Really confused with Jupyter Notebook, Lab, extensions, and ipywidgets

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

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

提前致谢

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

这使得为用户编写文档和示例的工作量最小,因为无论如何文档在一周后就会出错。所以你的困惑和缺乏 activity 目前是正常的。

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

一般情况下,Whosebug的问题尽量一次只问一个问题。话虽如此,我会尽力回答问题:

  1. ipywidgets 是主要方式,是的。这就是人们谈论笔记本小部件时的意思。
  2. jupyterlab 存储库上的 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. 我同意两者都可以提供更好的文档!我一直想这样做一段时间。实现这一目标的最佳方法可能是在各自的存储库中打开带有特定问题的问题,并建议在 README 或类似文件中进行解释。这样您就可以确保您的痛点得到解决。
  6. 鉴于小部件的庞大用户群,我认为它是安全的。虽然总线因素不是很高,但如果维护人员减少,人们往往会加紧努力。
  7. 是的,但是对于开发者和用户来说,使用 jupyterlab 的小部件仍然需要稍微高一些的维护。
  8. 您可能想要研究的是 Comms (http://jupyter-notebook.readthedocs.io/en/stable/comms.html),这是小部件在内部用于同步的内容。这是较低级别的,所以你必须判断哪个最适合你。