真的与Jupyter Notebook,Lab,扩展程序和ipywidgets混淆

时间:2017-12-15 05:09:57

标签: jupyter-notebook ipywidgets jupyter-lab

我想创建一个交互式JupyterLab Notebook应用程序,我需要创建一系列自定义小部件。所以我开始研究这件事,我越看越困惑。为了简单起见,我会问一堆简单的问题:

  1. 在Jupyter笔记本上使用小部件的最常用方法之一是使用ipywidgets库。正确?
  2. 与经典笔记本不同,JupyterLab的笔记本无法直接呈现JavaScript。因此,在ipywidgets文档中创建自定义窗口小部件的教程无法在JupyterLab上运行。正确?
  3. 如果想在JupyterLab的笔记本上运行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并将其带到笔记本电脑中进行进一步处理。
  9. 提前致谢

2 个答案:

答案 0 :(得分:5)

一般来说,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. 我同意两者都可以使用更好的文档!我一直想这样做。实现这一目标的最佳方法可能是打开有关各个存储库的特定问题的问题,并建议解释在README或类似内容中。这样你就可以确保你的痛点得到解决。
  6. 鉴于小部件的用户群很大,我认为它是安全的。虽然公交系数不是很高,但如果维护人员有所下降,人们往往会加强。
  7. 是的,但是对于开发人员和用户而言,使用jupyterlab的小部件仍然需要稍微维护。
  8. 您可能想要学习的是Commshttp://jupyter-notebook.readthedocs.io/en/stable/comms.html),这是小部件用于同步的内容。这是较低的水平,所以你必须判断哪个最适合你。

答案 1 :(得分:3)

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

这样可以最大限度地为用户编写文档和示例,因为无论如何一周后文档都会出错。所以你现在的混乱和缺乏活动是正常的。

一旦实验室稳定并且IPywidget团队开始移植所有内容,您应该看到改进。