66

在 Jupyter Notebook 中,ipywidgets 工作正常,但是它们似乎在 Jupyter Lab 中不起作用(据说比 Notebook 更好)。

我按照这些指示

第 1 步:安装 Node.js ( https://nodejs.org/en/ )

第 2 步:使用 conda 在 Python 3 上安装要求:

conda install -c conda-forge ipywidgets
jupyter labextension install @jupyter-widgets/jupyterlab-manager

不幸的是,基本小部件在 jupyter 实验室笔记本中不起作用:

在此处输入图像描述

4

9 回答 9

79

JupyterLab 现在更喜欢一个模型,其中不再允许将任意 javascript 嵌入到单元的输出中,这是过去工作的交互式 Jupyter Notebook 模块的数量。他们现在要求具有交互性的模块创建一个 JupyterLab 扩展。ipywidgets 提供了@jupyter-widgets/jupyterlab-manager满足此要求的扩展。

在 JupyterLab 3.0 或更高版本中使用 ipywidgets 7.6 或更高版本时,您无需执行任何操作:默认情况下会安装它。您可以通过运行检查是否已安装:

jupyter labextension list

其中应该包括如下一行:

@jupyter-widgets/jupyterlab-manager v3.0.0 enabled OK (python, jupyterlab_widgets)

如果您使用的是 JupyterLab 1 或 2(或旧版本的 ipywidgets),则需要通过在命令行上运行它来手动安装此扩展(假设您已经安装了NodeJS):

jupyter labextension install @jupyter-widgets/jupyterlab-manager
于 2018-04-02T14:27:58.100 回答
16

我有相同的 pbm,并尝试了这个解决方案(希望它可以帮助其他人):

在我的情况下jupyter labextension install @jupyter-widgets/jupyterlab-manager给出了这种错误:

> /Users/user/.nvm/versions/node/v8.7.0/bin/npm pack @jupyter-widgets/jupyterlab-manager
jupyter-widgets-jupyterlab-manager-0.35.0.tgz

Errored, use --debug for full output:
ValueError:
"@jupyter-widgets/jupyterlab-manager@0.35.0" is not compatible with the current JupyterLab
Conflicting Dependencies:
JupyterLab              Extension            Package
>=0.15.4-0 <0.16.0-0    >=0.16.0-0 <0.17.0-0 @jupyterlab/application
>=1.1.4-0 <2.0.0-0      >=2.0.0-0 <3.0.0-0   @jupyterlab/services
>=0.15.4-0 <0.16.0-0    >=0.16.0-0 <0.17.0-0 @jupyterlab/rendermime
>=0.15.4-0 <0.16.0-0    >=0.16.0-0 <0.17.0-0 @jupyterlab/notebook

然后,我所做的是使用以前的版本 0.34 而不是 0.35: jupyter labextension install @jupyter-widgets/jupyterlab-manager@0.34

事实上,根据这个,有时团队有时间考虑最后一个版本。

UP(根据评论):您可以检查jupyter lab --version并找到其版本兼容性的匹配项

它现在有效!

在此处输入图像描述

于 2018-04-24T12:31:38.413 回答
9

有同样的问题,今天对我有用的是运行“干净”命令,如此处所述:https ://ipywidgets.readthedocs.io/en/latest/user_install.html#installing-the-jupyterlab-extension

所以:

jupyter lab clean
jupyter labextension install @jupyter-widgets/jupyterlab-manager

这让它现在适合我。

于 2019-02-12T20:54:11.250 回答
4

注意:以上大部分答案已过时(截至 2021 年 7 月 19 日)。它应该与这些软件包的最新版本更加无缝。但是,在 2021 年,我panel在 jupyterhub 上托管的 jupyterlab 中渲染小部件时遇到了问题,并遇到了这篇文章。起初我尝试了其中一些答案,但没有一个有效。在深入研究了一些库后,我发现了以下内容:

  1. jupyter labextension install @jupyter-widgets/jupyterlab-manageripywidgets==7.6从和开始不再需要jupyterlab>=3.0来源。如果您使用的是最新版本的 jupyterlab,您应该只需要安装ipywidgets,只要小部件扩展作者也遵循一些步骤,扩展就会自动启用。

    此版本的主要变化是安装 ipywidgets 7.6.0 现在将自动启用 JupyterLab 3.0 中的 ipywidgets 支持——用户没有额外的 JupyterLab 安装步骤,也没有重建 JupyterLab,也不需要安装 Node.js。只需使用 pip (pip install ipywidgets==7.6.0) 或 conda/mamba (conda install -c conda-forge ipywidgets=7.6.0) 安装 python ipywidgets 包,ipywidgets 将自动在经典 Jupyter Notebook 和 JupyterLab 3.0 中运行。

  2. panel也效仿并在pyviz_comms包中捆绑了必要的扩展,所以理论上我的情况应该包括所有东西。来源

    在经典的 Jupyter notebook 环境和 JupyterLab 中,首先确保加载 pn.extension()。如果面板对象是笔记本单元格中的最后一项,则面板对象将呈现自己。对于 jupyterlab>=3.0 的版本,必要的扩展会自动捆绑在 pyviz_comms 包中,该包必须>=2.0。

我的问题的答案原来是我在通过jupyterhub构建jupyterlab服务器panel 后安装的。(例如,对于特定的笔记本,用户正在运行!pip install panel)。这是我有点模糊的地方,因为我不确定为什么这不起作用,因为它ipywidgets已经安装并且panel安装包括预构建的 jupyterlab 扩展。但是,我能够通过使用 jupyterlab 图像从 jupyterhub 生成ipywidgets>=7.6panel>=0.11.3(因此pyviz_comms>=2.0)预安装来解决我的问题。在此之后,jupyterhub 上的 jupyterlab 中的面板小部件现在可以工作了。希望这可以帮助任何有类似问题的人。

于 2021-07-19T12:14:36.700 回答
3

我遇到了一个Permission Denied错误,所以添加sudo到接受的命令有帮助:sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager.

于 2019-07-23T17:10:56.723 回答
3

我和@jtlz2 有同样的问题,除了@hainm 为jupyter-lab、ipywidgests 和jupyter-widgets/jupyterlab-manager 提供的非常具体的版本组合之外,上述建议都不适合我。

按照这篇文章中列出的初始版本号(https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214),我试图找到最新的有效版本组合。我在下面列出了它们,这样如果真的没有其他东西对他/她有用,可以尝试一下。

pythonversion=3.8.0
labversion=2.1.5
labmanagerversion=2.0
ipywidgetsversion=7.5.1
nodejsversion=10.13.0

conda create -n lab python=$pythonversion -y
source activate lab
conda install nodejs=$nodejsversion -c conda-forge -y
conda install ipywidgets=$ipywidgetsversion -c conda-forge -y
conda install jupyterlab=$labversion  -y -c conda-forge
jupyter-labextension install @jupyter-widgets/jupyterlab-manager@$labmanagerversion

看来nodejs的版本起了关键作用。保持一切平等,如果我将 nodejsversion 更新为 12.x+ 或最新的 14.x,这种组合以及 @hainm 的组合都无法使 ipywidgets 在 Jupyterlab 中正常运行。

除了我在上面的代码单元中列出的那个之外,以下 6 种组合也适用于我。

(pythonversion ,labversion ,labmanagerversion ,ipywidgets ,nodejsversion)

  1. (3.7, 0.34, 0.37, 7.4.2, 10.13)
  2. (3.7, 1.0, 1.0, 7.4.2, 10.13)
  3. (3.7、2.0、2.0、7.4.2、10.13)
  4. (3.8, 2.0, 2.0, 7.4.2, 10.13)
  5. (3.8、2.0、2.0、7.5.1、10.13)
  6. (3.8、2.1.5、2.0、7.5.1、10.13)
于 2020-11-05T15:58:32.103 回答
2

根据ipywidgets.readthedocs.io文档(安装 JupyterLab 扩展),对于“ JupyterLab ”,请在“ Anaconda Prompt ”中执行以下步骤。

第1步

conda install -c conda-forge nodejs

第2步

jupyter labextension install @jupyter-widgets/jupyterlab-manager
于 2020-06-07T20:33:05.437 回答
1

其他答案都没有对我有用。这一切似乎都取决于版本兼容性。终于让它工作了——见下文。所有归功于 github 上的@hainm(原始链接:https ://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214 )我对此的回答:https ://stackoverflow.com/a/60059786 /1021819 这是该答案的直接副本:

利用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 - 小部件终于出现了!

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

在此处输入图像描述

于 2020-02-07T06:42:46.797 回答
0

如果您使用的是 linux 并且您宁愿完全避免使用 conda,并使用虚拟环境 (venvs) 来让 python 开心,并且您碰巧使用的是基于“旧”/LTS Debian 的操作系统,它可能没有最新的 nodejs :即 Ubuntu 16.04 LTS,它没有node但是nodejsnode属于另一个包,'legacy nodejs' 版本太旧),然后继续阅读。

设置起来有点复杂,但比 conda 更容易长期维护。(你总是可以venv为一个新项目创建一个新项目,而不会破坏你的旧项目)。

要点是:

  • 使用 PPA 获取所需内容的新版本
  • 使用 virtualenvwrapper,您可以:
    • 使用最新的 python3
    • 避免弄乱你的“点子安装”
    • 避免让系统包管理器混淆
    • 也可以轻松地与使用不同版本 python 的人合作
    • 遵循 python 最佳实践
    • 很容易拥有不同的 venv,它们可能有旧的或不兼容的 python 和 pip 包。
  • 使用Nodejs 二进制发行版
    • jupyterlab 小部件需要 node.js 版本“10.x”
    • 允许使用系统的包管理器来保持 nodejs 新鲜
    • 只要 LTS 存在,就会保持并可用

所以,所有实际步骤(这些都经过测试可以在 Linux Mint 18.3 Sylvia 上工作,它基本上与 ubuntu xenial aka Ubuntu 16.04 LTS 兼容。差异主要出现在 nodejs 中,阅读上面 github 链接中的自述文件以解决其他操作系统) :

找一个管理员来做(或者如果你可以 sudo 自己做):

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.8 python3.8-dev python3.8-distutils python3-pip python3-venv
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

然后,作为您自己的用户,您可以完成其余步骤:

pip3 install --user virtualenv virtualenvwrapper
mkdir ~/.envs

然后,您需要将以下内容添加到您的末尾.bashrc

export PATH=~/.local/bin:$PATH
export WORKON_HOME=~/.envs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source ~/.local/bin/virtualenvwrapper.sh

此时,创建一个新的 shell,您将能够运行其余的设置,实际安装 jupyterlab:

mkvirtualenv -p python3.8 jupenv
pip install jupyter matplotlib pandas ipympl tqdm
jupyter labextension install @jupyter-widgets/jupyterlab-manager

现在你完成了。

要打开/使用 jupyter,您需要(因为我在jupenv上面调用了 venv,您可以在该mkvirtualenv行中随意命名):

workon jupenv
jupyter lab

否则,我将无休止地试图让 nodejs 与过时的 ubuntu 包一起工作。有时它会工作,重新启动几次,然后失败。其他时候它只会继续给我同样的缺失小部件,或者有时是几行垃圾 js 代码。

Virtualenvs 非常值得使用,尤其是当您开始认真使用 python,并与可能使用不同版本/不同 pip 包集的其他人一起工作时。VirtualEnvWrapper使这非常轻松。基本的一点是,你“pip install”的所有东西,甚至是 jupyter,最终都会被完全分开(并且与系统包分开),这让所有东西都能很好地工作。

有一些基本的做和不做:

  • 不要在pip install ...没有进入 venv 的情况下运行线路
  • 不要pip3pipvenv 中使用。
  • 只使用python而不是python3在其中运行。
  • 不要使用conda...
  • 请注意,您可以通过以下方式一次更新所有 virtualenvs:
    • allvirtualenv pip install -U pip

至于 nodejs 二进制分发包:强烈推荐它们支持您的特定操作系统。它们将是最新的,应该会带来最少的麻烦。

于 2020-06-22T07:36:06.037 回答