首页 > 解决方案 > 如何克服“错误:在注册表中找不到对象'jupyter.widget'”?

问题描述

我在 kubernetes 上的 jupyterhub 中运行 jupyterlab。

我正在尝试使用例如显示小部件

from ipywidgets import interact

@interact(x=(0, 100, 10))
def p(x=50):
    pass

实验室笔记本打印的不是预期的交互式小部件:

interactive(children=(IntSlider(value=50, description='x', step=10), Output()), _dom_classes=('widget-interact...

在检查 javascript 控制台时:

default.js:129 Error: Object 'jupyter.widget' not found in registry
    at default.js:1474
    at new Promise (<anonymous>)
    at Object.loadObject (default.js:1453)
    at DefaultKernel.<anonymous> (default.js:919)
    at Generator.next (<anonymous>)
    at default.js:9
    at new Promise (<anonymous>)
    at push.YC29.__awaiter (default.js:5)
    at DefaultKernel._handleCommOpen (default.js:911)
    at DefaultKernel.<anonymous> (default.js:1018)

我尝试了许多不同的组合:

!pip install ipywidgets
!pip install widgetsnbextension --upgrade
!pip install widgetslabextension --upgrade
!conda install -n base -y --override-channels -c main -c conda-forge widgetsnbextension ipywidgets nodejs
!jupyter nbextension enable --py widgetsnbextension
!jupyter labextension enable widgetsnbextension
!jupyter labextension list
!jupyter labextension install @jupyter-widgets/jupyterlab-manager
!jupyter lab clean
!jupyter lab build
!pip install --upgrade Nodejs
!npm install -g npm yarn
!jupyter serverextension enable --py jupyterlab --sys-prefix

jupyterlab 为 1.0.0,而 jupyterlab-manager 为 1.0。

一切就绪后,如何传播更改?

注意如果我重新启动 jupyterlab 容器将重新启动并且所有更改都将丢失。

我会做任何事情——打印版本、冻结点、运行测试、重新格式化/改写这个问题。

有没有人有一个远程线索如何解决这个问题?

请帮忙!

以下没有帮助:

如何让 ipywidgets 在 Jupyter Lab 中工作?

https://ipywidgets.readthedocs.io/en/latest/user_install.html#installing-the-jupyterlab-extension

显示小部件/ ipywidgets 安装不成功的问题

https://github.com/jupyter-widgets/ipywidgets/issues/2220

https://github.com/jupyter-widgets/ipywidgets/issues/2514

https://github.com/jupyter-widgets/ipywidgets/issues/2483

https://github.com/twosigma/beakerx/issues/7520

https://github.com/jupyterlab/jupyterlab/issues/6998

https://jupyterhub.readthedocs.io/en/stable/troubleshooting.html

https://github.com/jupyter-widgets/ipywidgets/issues/1949

https://github.com/jupyter-widgets/ipywidgets/pull/1962

标签: pythonjupyter-notebookjupyter-labipywidgetsjupyterhub

解决方案


利用https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214在 jupyterlab 终端中 - 在 jupyterhub 上运行 - 执行:

pythonversion=3.7
labversion=0.34.12
labmanagerversion=0.37.4
ipywidgetsversion=7.4.2

conda install ipywidgets=$ipywidgetsversion -c conda-forge -y --override-channels -c main
conda install jupyterlab=$labversion  -y -c conda-forge --override-channels -c main
jupyter-labextension install @jupyter-widgets/jupyterlab-manager@$labmanagerversion

在这一点上,jupyter lab clean; jupyter lab build可能会感兴趣。

然后在同一个 jupyterlab 窗口中运行的 .ipynb 笔记本中,点击重启内核按钮。

重要提示:不要忘记刷新浏览器页面 - 否则所有努力都将付诸东流。:\

然后执行示例:

from ipywidgets import interact

@interact(x=(0, 100, 10))
def p(x=50):
    pass

我从没想过我会活着看到这一天,但是 - 嘿 presto - 小部件终于出现了!

可悲的是,设置对其他扩展的安装非常敏感,并且兼容版本的组合非常具体。

在此处输入图像描述


推荐阅读