在Jupyter Notebook中,ipywidgets运行良好,但它们似乎在Jupyter Lab中无法工作(据说它比Notebook更好)。
我遵循了这些directions。
第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实验室笔记本中不起作用:
答案 0 :(得分:35)
JupyterLab现在更喜欢将arbitrary javascript is no longer allowed嵌入到单元格输出中的模型,这是用于工作的交互式Jupyter Notebook模块的数量。他们现在问modules with interactivity create a JupyterLab extension。 IPyWidgets在您的命令行上运行此命令extension that can be activated(假设您已经安装了NodeJS):
jupyter labextension install @jupyter-widgets/jupyterlab-manager
答案 1 :(得分:7)
我有同样的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
事实上,根据this,有时团队有时间考虑最后一个版本。
它现在有效!
答案 2 :(得分:3)
遇到了同样的问题,今天对我有用的是运行“ clean”命令,如此处所述:https://ipywidgets.readthedocs.io/en/latest/user_install.html#installing-the-jupyterlab-extension
所以:
jupyter lab clean
jupyter labextension install @jupyter-widgets/jupyterlab-manager
这使它现在对我来说正确。
答案 3 :(得分:2)
我有一个与@ 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)
答案 4 :(得分:2)
注意:以上大部分答案都已过时(截至 2021 年 7 月 19 日)。使用这些软件包的最新版本应该会更加无缝。但是,在 2021 年,我在 jupyterhub 上托管的 jupyterlab 中呈现 panel
小部件时遇到问题,并看到了这篇文章。起初我尝试了其中的一些答案,但没有一个奏效。在深入研究了一些库后,我发现了以下内容:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
和 ipywidgets==7.6
起不再需要 jupyterlab>=3.0
。 source。如果您使用的是最新版本的 jupyterlab,您只需要安装 ipywidgets
,只要小部件扩展作者还 follow some steps,该扩展就会自动启用。
<块引用>
此版本的主要变化是安装 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 中工作。
panel
也效仿并在 pyviz_comms
包中捆绑了必要的扩展,因此理论上所有内容都应该包含在我的案例中。 source
<块引用>
在经典的 Jupyter notebook 环境和 JupyterLab 中,首先确保加载 pn.extension()。如果面板对象是笔记本单元格中的最后一个项目,则它们将自行呈现。对于 jupyterlab>=3.0 的版本,必要的扩展自动捆绑在 pyviz_comms 包中,必须>=2.0。
我的问题的答案原来是我在通过 jupyterhub 构建 jupyterlab 服务器之后安装了 panel
。 (例如,对于特定笔记本,用户正在运行 !pip install panel
)。考虑到 ipywidgets
已经安装并且 panel
install 包括预构建的 jupyterlab 扩展,因此我不确定为什么这不起作用,这是我有点模糊的地方。但是,我能够通过使用 jupyterlab 图像从 jupyterhub 中生成来解决我的问题,该 jupyterhub 已预安装 ipywidgets>=7.6
和 panel>=0.11.3
(因此 pyviz_comms>=2.0
)。在此之后,jupyterhub 上 jupyterlab 中的面板小部件现在可以工作了。希望这可以帮助任何遇到类似问题的人。
答案 5 :(得分:0)
我遇到一个Permission Denied
错误,因此在接受的命令中添加sudo
有助于:sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager
。
答案 6 :(得分:0)
没有其他答案对我有用。一切似乎都取决于版本兼容性。终于成功了-见下文。 全部归功于github上的@hainm(原始链接:https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214) 我对此的答案:https://stackoverflow.com/a/60059786/1021819 这是该答案的直接副本:
在Jupyterlab终端中使用https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214-在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
我从没想过要住一天,但是-嘿,我很高兴-小部件终于出现了!
可悲的是,该设置对其他扩展的安装极为敏感,兼容版本的组合非常具体。
答案 7 :(得分:0)
根据ipywidgets.readthedocs.io文档(Installing the JupyterLab Extension),对于“ JupyterLab ”,请在“ Anaconda提示”中执行以下步骤。
第1步
conda install -c conda-forge nodejs
第2步
jupyter labextension install @jupyter-widgets/jupyterlab-manager
答案 8 :(得分:0)
如果您使用的是Linux,并且您宁愿完全避免使用conda ,而是使用虚拟envs(venvs)来保持python的快乐,并且您恰巧使用的是“ older” / LTS Debian基于操作系统,可能没有最新的nodejs:例如,Ubuntu 16.04 LTS,它没有node
而是nodejs
(node
属于另一个软件包,'legacy nodejs的版本太旧),然后继续阅读。
此 的设置有点复杂,但是长期维护比conda容易得多。 (您始终可以为一个新项目新建一个venv
,而不会破坏您的旧项目。
要点是:
因此,所有实际步骤(这些步骤均经过测试,可在Linux Mint 18.3 Sylvia上运行,该步骤与ubuntu xenial aka Ubuntu 16.04 LTS基本兼容。差异将主要出现在nodejs中,请阅读上述github链接中的自述文件以解决问题其他操作系统):
让管理员去做(或者自己动手做):
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
的静脉,可以在mkvirtualenv
行中随意命名):
workon jupenv
jupyter lab
否则,我想尽一切办法让nodejs与过时的ubuntu软件包一起工作。有时它会工作,几次重新启动,然后失败。其他时候,它只会给我同样的缺少的小部件,或者有时会出现几行垃圾js代码。
Virtualenvs非常值得使用,尤其是当您开始认真使用python并与可能使用不同版本/不同pip软件包的其他人一起工作时。 VirtualEnvWrapper使这个过程非常轻松。 基本要点是,您“ pip安装”的所有内容(甚至jupyter)最终都被完全分开(与系统软件包分开),这使一切正常运行。
有一些基本的要做和不做的事情:
pip install ...
行pip3
代替pip
。python
而不是python3
来运行。conda...
!allvirtualenv pip install -U pip
关于nodejs二进制分发软件包:强烈建议它们在支持您特定操作系统的地方使用。它们将是最新的,并且应该减少麻烦。