安装#
用户可以使用pip或conda安装当前版本的ipywidgets。
在大多数情况下,安装 Python ipywidgets 包也会自动配置经典 Jupyter Notebook 和 JupyterLab 3.x 以显示 ipywidgets。使用 pip 时,执行:
pip install ipywidgets
或使用 conda,执行:
conda install -c conda-forge ipywidgets
在JupyterLab 3.x中安装#
大多数时候,安装 ipywidgets 会自动配置 JupyterLab 3.x 使用小组件。ipywidgets 包通过依赖 jupyterlab_widgets 包来实现这一点,该包配置 JupyterLab 3 以显示和使用小组件。
如果JupyterLab和IPython内核安装在不同的环境中(例如,不同的环境提供了不同的Python内核),那么安装需要两个步骤:
在包含JupyterLab的环境中安装
jupyterlab_widgets包。在每个将使用 ipywidgets 的内核环境中安装
ipywidgets。
例如,如果使用 conda 环境,JupyterLab 安装在
base 环境中,内核安装在名为 pyenv 的环境中,
命令为:
conda install -n base -c conda-forge jupyterlab_widgets
conda install -n pyenv -c conda-forge ipywidgets
在经典Jupyter Notebook中安装#
大多数情况下,安装 ipywidgets 会自动配置Jupyter Notebook以使用小部件。 ipywidgets 包通过依赖 widgetsnbextension 包来实现这一点,该包配置了经典Jupyter Notebook以显示和使用小部件。
如果您的Jupyter Notebook和IPython内核安装在不同的环境中(例如,不同环境提供不同的Python内核),那么安装需要两个步骤:
在包含 Jupyter Notebook 服务器的环境中安装
widgetsnbextension包。在每个将使用 ipywidgets 的内核环境中安装
ipywidgets。
例如,如果使用conda环境,其中Jupyter Notebook安装在
base 环境中,而内核安装在一个名为 pyenv 的环境中,
命令为:
conda install -n base -c conda-forge widgetsnbextension
conda install -n pyenv -c conda-forge ipywidgets
安装到JupyterLab 1或2#
要将JupyterLab扩展安装到JupyterLab 1或2中,你还需要在终端中运行下面的命令,这要求你已经安装了nodejs。
例如,如果使用conda环境,可以通过以下方式安装nodejs:
conda install -c conda-forge nodejs
然后你可以安装 labextension:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
此命令默认安装最新版本的ipywidgets JupyterLab 扩展。根据您已安装的 JupyterLab 版本,您 可能需要安装一个旧版本。
如果您在 JupyterLab 运行时安装此扩展,您需要刷新页面或重新启动 JupyterLab 才能使更改生效。
注意: 可以通过先运行 jupyter lab clean 命令来彻底重新安装 JupyterLab 扩展,该命令将移除实验室目录中的暂存和静态目录。实验室目录的位置可以通过在终端执行 jupyter lab path 命令来查询。
安装到经典 Jupyter Notebook 5.2 或更早版本#
如果您安装了旧版本的 Jupyter Notebook(版本 5.2 或更早),您可能需要手动启用 ipywidgets 笔记本扩展,通过:
jupyter nbextension enable --py widgetsnbextension
当使用virtualenv并在已激活的虚拟环境中工作时,可能需要使用--sys-prefix选项来启用扩展并保持环境隔离(即
jupyter nbextension enable --py widgetsnbextension --sys-prefix)。
常见问题解答#
GitHub上Reference milestone中的问题包含许多关于ipywidgets的问题、讨论和答案。
问题: 当我显示一个部件或交互时,我只看到一些文本,例如 IntSlider(value=0) 或 interactive(children=(IntSlider(value=0, description='x', max=1), Output()), _dom_classes=('widget-interact',))。这是怎么回事?
答案: 如果控件不可用,则会打印出小部件的文本表示。这可能意味着小部件的 JavaScript 仍在加载。如果在 Jupyter Notebook 或 JupyterLab 中该消息持续出现,很可能意味着小部件的 JavaScript 库未安装或未启用。请参考上文的安装说明进行设置。
如果您在另一个前端(例如,GitHub或NBViewer上的静态渲染)中看到此消息,这可能意味着您的前端目前不支持widgets。