创建可离线使用的 JupyterLite 存档#

可以创建一个完全独立的 JupyterLite 存档,无需请求外部服务。

某些配置部分取决于您可能使用的内核。

本指南仅关注两个 Python 内核:Xeus Python 和 Pyodide。

使用 Xeus Python 内核#

使用 Xeus Python 内核,包会在构建时自动预安装。

然后它们作为静态资产在 JupyterLite 输出目录中可用。

默认情况下,这些资产可在离线状态下使用,无需额外配置。

有关更多信息,请参阅 相关指南

使用 Pyodide 内核#

配置 Pyodide 内核#

默认情况下,Pyodide 文件是从 CDN 获取的。

完整的 Pyodide 发行版可能相当大(约 180MB),但可以自行托管。

使用 --pyodide 标志指定要使用的 Pyodide 发行版。例如

jupyter lite build --pyodide https://github.com/pyodide/pyodide/releases/download/0.22.1/pyodide-0.22.1.tar.bz2

警告

通常,pyodide_kernel 的某个版本可能只与发布时测试过的相同 x.y.z 版本的变体兼容,因为 Python 和 JS API 在依赖关系的两端都还在频繁变化。

配置 piplite 轮子#

默认情况下,调用 %pip installpiplite.install() 会从公共 PyPI 下载并安装软件包。

相反,您可以配置一个软件包列表,这些软件包将在构建时下载,以便它们可以与您的 JupyterLite 网站一起托管。

有关更多信息,请参阅 在构建时提供其他 Pyodide 轮子

具体来说,这意味着填充一个用于下载轮子的 URL 列表。一个很好的例子是 JupyterLite 演示网站使用的配置:jupyter_lite_config.json

jupyter_lite_config.json 中的相关部分是 piplite_urls 列表,它看起来像这样

{
  "PipliteAddon": {
    "piplite_urls": [
      "https://files.pythonhosted.org/packages/e6/0b/24795939622d60f4b453aa7040f23c6a6f8b44c7c026c3b42d9842e6cc31/fastjsonschema-2.15.3-py3-none-any.whl",
      "https://files.pythonhosted.org/packages/py2.py3/a/asttokens/asttokens-2.0.5-py2.py3-none-any.whl",
      "https://files.pythonhosted.org/packages/py2.py3/b/backcall/backcall-0.2.0-py2.py3-none-any.whl",
      "https://files.pythonhosted.org/packages/py2.py3/b/bqplot/bqplot-0.12.33-py2.py3-none-any.whl",
      "https://files.pythonhosted.org/packages/py2.py3/c/certifi/certifi-2021.10.8-py2.py3-none-any.whl",
      "https://files.pythonhosted.org/packages/py2.py3/d/defusedxml/defusedxml-0.7.1-py2.py3-none-any.whl",
      "https://files.pythonhosted.org/packages/py2.py3/e/executing/executing-0.8.3-py2.py3-none-any.whl",
      "..."
    ]
  }
}

根据您想要静态提供服务的软件包调整此列表。

离线渐进式 Web 应用 (PWA)#

JupyterLite 可用作移动设备上的渐进式 Web 应用 (PWA),也可用于桌面。

当 JupyterLite 被配置为按照本指南中的说明离线工作时,应该可以将 JupyterLite 用作 PWA,而无需任何网络连接。可能仍然需要在连接到互联网的情况下使用该应用程序,以便底层的 Service Worker 可以缓存资产。

查看 使用 指南,了解有关如何将 JupyterLite 安装为应用程序的更多详细信息。

参考#

查看 CLI 参考,了解更多详细信息。