添加扩展#
JupyterLite 重新使用与 JupyterLab 3.0+ 中相同的预构建扩展系统。预构建扩展有时也称为联合扩展。在 JupyterLab 中,它们可以通过 pip
和 conda
安装,而无需重建整个 JupyterLab 应用程序。
默认情况下,JupyterLite 附带的所有应用程序都是使用 JupyterLab 组件构建的。这使得大多数现有的第三方 JupyterLab 扩展也能与 JupyterLite 一起使用。
从环境中添加新扩展#
创建一个新环境#
添加新扩展的最简单方法是在已经安装了扩展的 Python 环境中使用 JupyterLite CLI。
您可以选择您喜欢的工具来管理这些依赖项,例如 pip
、conda
或 mamba
。对于 conda
和 mamba
,它们通常在 environment.yml
中定义,而对于 pip
,则在 requirements.txt
中定义。
如果您想在本地机器上构建 JupyterLite 网站,最好先创建一个新环境。
这可以使用 venv
模块完成
python -m venv .
source bin/activate
或者使用 conda
/ mamba
mamba create -n my-jupyterlite-deployment -c conda-forge python -y
mamba activate my-jupyterlite-deployment
在环境中安装扩展#
例如,让我们使用以下 requirements.txt
jupyterlab-tour
jupyterlab-night
此文件定义了两个扩展,其中一个是主题。运行以下命令安装它们
python -m pip install -r requirements.txt
如果你已经安装了 jupyterlab
,你可以使用以下命令验证它们是否已正确安装
jupyter labextension list
这应该返回类似于以下内容的结果
JupyterLab v4.*.*
PREFIX/share/jupyter/labextensions
jupyterlab-tour v4.0.1 enabled OK
jupyterlab-night v0.4.0 enabled OK
构建 JupyterLite 网站#
现在我们需要生成包含这些扩展的 JupyterLite 存档。可以使用以下命令完成此操作
jupyter lite build
当你运行 jupyter lite build
时,JupyterLab 环境中的所有预构建扩展,例如 {sys.prefix}/share/jupyter/labextensions
将被
复制到
{output-dir}/extensions
并将它们的主题信息复制到
{output-dir}/{app/?}theme/
Jupyter Widgets 和自定义渲染器的案例#
一些扩展,例如 Jupyter Widgets 和自定义渲染器,还需要在运行时安装 Python 包,以便在使用笔记本时工作。例如,ipyleaflet
、bqplot
或 plotly
就是这种情况。
要安装前端扩展,只需将其添加到需求列表中。例如,从上面定义的 requirements.txt
文件继续
jupyterlab-tour
jupyterlab-night
ipywidgets
bqplot
plotly
你的 JupyterLite 实例的最终用户仍然需要在运行时使用与 IPython 兼容的 %pip
魔法命令在他们的笔记本中安装这些依赖项
%pip install -q ipywidgets bqplot plotly
这转化为
import piplite
await piplite.install(["ipywidgets", "bqplot", "plotly"])
避免前端扩展和 Python 包之间的版本漂移#
在某些情况下,使用 %pip install
或 piplite.install
在运行时安装的包的版本可能不再与已部署的前端扩展兼容。例如,当 JupyterLite 网站在几周前构建并部署时,而 Python 包的新版本已经发布,就会发生这种情况。在这种情况下,前端扩展不会更新,因为它们仍然作为部署的一部分以静态文件的形式提供。
避免这种不匹配的一种方法是更明确地固定依赖项。例如
ipywidgets==7.7.0
bqplot==0.12.30
plotly==5.8.0
笔记本中的用户界面代码也必须使用相同的版本才能保持兼容
%pip install -q "ipywidgets==7.7.0" "bqplot==0.12.30" "plotly==5.8.0"
这转化为
import piplite
await piplite.install(["ipywidgets==7.7.0", "bqplot==0.12.30", "plotly==5.8.0"])
不幸的是,这有点脆弱,但目前可以完成工作。在 JupyterLite 的未来版本中,这可能会得到改进。
如果你想对你的依赖项有更多控制,请查看 配置 piplite URL 的指南。
如何知道扩展是否与 JupyterLite 兼容?#
对于可能有效的扩展,一个好的起点是 JupyterLab 问题 扩展与 3.0 的兼容性 (#9461)。此外,本网站演示了一些 扩展。
高级扩展配置#
如果你正在寻找更多配置扩展的选项,请查看关于 高级扩展配置 的专用指南。