CLI#
jupyter lite
(或 jupyter-lite
)CLI 提供了将以下各项结合在一起的生命周期工具:
核心 JupyterLite 静态资源
额外的 应用程序功能,如 Lab 扩展 和设置
内核特定资源,如 Python wheel 文件
用户创作内容,如 Notebook 文件
...整合到 可部署(并且可选 可重现)的 Jupyter 站点中,这些站点需要 HTTP 服务器,但不需要 应用程序 服务器。
安装#
!pip install jupyterlite-core
!jupyter lite --version
Requirement already satisfied: jupyterlite-core in /home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/conda/stable/lib/python3.12/site-packages (0.6.4)
Requirement already satisfied: doit<1,>=0.34 in /home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/conda/stable/lib/python3.12/site-packages (from jupyterlite-core) (0.36.0)
Requirement already satisfied: jupyter-core>=4.7 in /home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/conda/stable/lib/python3.12/site-packages (from jupyterlite-core) (5.8.1)
Requirement already satisfied: cloudpickle in /home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/conda/stable/lib/python3.12/site-packages (from doit<1,>=0.34->jupyterlite-core) (3.1.1)
Requirement already satisfied: importlib-metadata>=4.4 in /home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/conda/stable/lib/python3.12/site-packages (from doit<1,>=0.34->jupyterlite-core) (8.7.0)
Requirement already satisfied: zipp>=3.20 in /home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/conda/stable/lib/python3.12/site-packages (from importlib-metadata>=4.4->doit<1,>=0.34->jupyterlite-core) (3.23.0)
Requirement already satisfied: platformdirs>=2.5 in /home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/conda/stable/lib/python3.12/site-packages (from jupyter-core>=4.7->jupyterlite-core) (4.3.8)
Requirement already satisfied: traitlets>=5.3 in /home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/conda/stable/lib/python3.12/site-packages (from jupyter-core>=4.7->jupyterlite-core) (5.14.3)
0.6.4
附加组件依赖项#
不同 附加组件 的某些额外功能具有额外的依赖项。
pip install jupyterlite-core[contents] # jupyter_server for contents API indexing
pip install jupyterlite-core[serve] # tornado for better local previewing with `serve`
pip install jupyterlite-core[check] # validate more data with jsonschema
pip install jupyterlite-core[lab] # a known-compatible jupyterlab (entails `contents`, `serve`, `check`)
...或者,针对所有功能
pip install jupyterlite-core[all] # all of the above!
!pip install jupyterlite-core[all]
安装内核#
jupyterlite-core
包提供了构建 JupyterLite 网站的核心功能,默认不安装任何内核。
如果您想在 JupyterLite 部署中包含内核,则需要在构建站点之前安装它。
例如,要同时包含基于 Pyodide 的 Python 内核
pip install jupyterlite-pyodide-kernel
快速入门#
安装后,可以通过以下方式访问本地托管的空 JupyterLite 站点:
jupyter lite serve
这将
Lite 目录#
当您运行 jupyter lite
命令时,它假定您的当前工作目录是 JupyterLite 站点的一部分内容。您可以使用 --lite-dir
覆盖此设置。默认情况下,构建的站点将创建在 _output
中,但可以使用 --output-dir
覆盖。
知名文件#
您的 --lite-dir
中的一些具有特殊含义的文件
查找路径... |
... 查找名为 |
... 如果找到 |
---|---|---|
|
|
与 |
|
|
与 |
|
|
逐字复制到 |
|
|
逐字复制到 |
|
|
逐字复制到 |
有关合并内容的更多信息。
用法#
常见参数#
所有以下参数都在 jupyter_lite_config.json#LiteBuildConfig
中配置。
参数 |
描述 |
default |
环境变量 |
---|---|---|---|
|
站点的配置和内容 |
当前工作目录 |
|
|
将创建可托管站点的位置 |
|
|
|
下载的缓存目录 |
|
|
|
按入口点名称禁用特定附加组件 |
||
|
基于的替代站点 |
捆绑 |
|
|
要复制到 |
|
|
|
绝不 应包含在 |
各种 |
|
|
绝不 应包含在 |
||
|
存档的路径 |
|
|
|
在 |
|
|
|
包含在站点之前的 URL 前缀 |
|
|
|
可选启用额外的可重现构建措施(尽力而为!) |
|
|
|
包含扩展的文件夹、 |
||
|
不要从 |
|
|
|
要启用的附加设置覆盖 |
附加组件配置#
一些构建时附加组件提供了自己的 CLI 标志和可配置值。这些也可能在 jupyter-lite.json
中配置运行时选项。
PyodideAddon
#
参数 |
描述 |
default |
环境变量 |
---|---|---|---|
|
pyodide 发行版(或 .bz2 存档)的路径或 URL |
|
PipliteAddon
#
参数 |
描述 |
default |
环境变量 |
---|---|---|---|
|
在运行时可供 pyodide 内核使用的额外 wheel 文件 |
所有参数都可以通过 jupyter lite
启动目录中的 jupyter_lite_config.json
进行配置,或者通过 --config
提供。
提示
有关高级示例,请参阅本文档使用的配置。
帮助#
CLI 提供了自己的文档,在 --help
(或 -h
)下。
!jupyter lite --help
状态#
此命令始终可以安全运行,它提供了 JupyterLite 正在做什么的概述。
!jupyter lite status
列表#
此命令始终可以安全运行,它提供了 JupyterLite 可能 会做什么的概述。
TODO: 改进默认输出
!jupyter lite list
初始化#
将所有静态数据复制到 --output-dir
。
!jupyter lite init
构建#
将所有 用户创作内容 复制到 --output-dir
,并应用适当的更改,例如生成的 Contents API 响应。
特殊的知名文件将进行适当的 合并,但通常,用户目录中存在的文件将覆盖任何现有内容。
!jupyter lite build
服务#
在 http://127.0.0.1:{--port=8000}{--base-url=/}
上服务 --output-dir
。
警告
这 不是 生产服务器。在尝试将其变为其他用途之前,请考虑 任何 部署选项。
!jupyter lite serve --help
HTTP 标头#
在本地工作时,模拟与站点部署方式相匹配的 HTTP 标头会很方便。由于这些变得相当复杂,以下选项是可配置的,但只影响 jupyter lite serve
,例如使用 extra_http_headers
(扩展默认标头)或 http_headers
(替换任何默认标头)模拟“宽松”主机
{
"LiteBuildConfig": {
"http_headers": {
"Access-Control-Allow-Headers": "x-requested-with",
"Access-Control-Allow-Methods": "POST, GET, OPTIONS",
"Access-Control-Allow-Origin": "*"
}
}
}
检查#
使用所有可用机制验证构建文件夹是否符合架构等。
!jupyter lite check
存档#
将 输出目录 转换为 .tgz
文件。这通常比(有时)数百个文件更容易移动,并且可以用作未来站点的基线。
此命令 相对 耗时,为文档目的跳过
!jupyter lite archive --help
if not RTD:
!jupyter lite archive
但是,让我们谈谈更 可重现 的资产。
可重现存档#
🛠️ 此功能正在 开发中,尚不应依赖于任何生产工作流。
如果给定 --source-date-epoch
,将采取多项措施 尝试确保 jupyter lite archive
的输出(一个 npm 兼容的 tgz
包)始终返回位对位 可重现构建。
最明显的变化是每个文件的修改时间“钳制”到该时间。其他一些变化是
文件所有权将重置
将使用可预测的排序
将应用额外检查
注意
这是设置环境变量 SOURCE_DATE_EPOCH
的快捷方式
平台 |
命令 |
---|---|
Linux |
|
Windows |
|
Python |
|
SOURCE_DATE_EPOCH is 1754646237
/tmp/ipykernel_3501/711058523.py:4: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
source_date_epoch = int(datetime.utcnow().timestamp())
if not RTD:
!jupyter lite archive --source-date-epoch {source_date_epoch} --output-archive ./a.tgz
如果我们清除 _output
...
...并重建,我们应该始终得到相同的文件。
if not RTD:
!jupyter lite archive --source-date-epoch {source_date_epoch} --output-archive ./b.tgz
杂项#
合并内容#
除了默认的 files/
路径之外,还可以使用 --contents
提供其他文件,以便在 JupyterLite 启动时显示在 文件管理器 或 树 中,该参数可以多次提供。
注意
如果提供了
--contents
,则--contents files
的默认值将被忽略如果多次给定,并且子文件夹/文件名发生冲突,则 最后一个 路径获胜
提示
对于复杂的文件布局,强烈建议 使用 jupyter_lite_config.json
。
内容示例#
给定一个目录,例如
my-lite-dir/
files/
README.md
a.md
more-files/
README.md
b.md
不带任何参数运行 jupyter lite build
将产生
my-lite-dir/
_output/
README.md
a.md
而 jupyter lite build --contents more-files --contents files
将产生
my-lite-dir/
_output/
files/
README.md # this will be from my-lite-dir/files
a.md
b.md
而 jupyter lite build --contents files --contents more-files
将产生
my-lite-dir/
_output/
files/
README.md # this will be from my-lite-dir/more-files
a.md
b.md
conda 包#
虽然 --federated-extensions
支持大多数 conda
包创建的 .tar.bz2
,但存在一些问题
anaconda.org
使用非标准 HTTP 标头向 S3 存储桶提供包conda-forge
频道将其所有构建作为 GitHub 发布提供,并且可以可预测地转换,例如
https://anaconda.org/conda-forge/jupyterlab_widgets/1.0.0/download/noarch/jupyterlab_widgets-1.0.0-pyhd8ed1ab_1.tar.bz2
| |
| +---------------------------------------------+
v v v
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.0-pyhd8ed1ab_1.tar.bz2
Pyodide wheel 文件#
希望包含用于 Pyodide 内核 的 wheel 文件的 预构建 Lab 扩展 开发人员可以使用此命令预先索引他们希望分发的 wheel 文件。如果包需要上游补丁等,这会很有用。
!jupyter lite pip index --help
Pyodide#
Pyodide 是 CPython 的 WebAssembly 发行版,为 Pyodide 内核 提供支持。 Pyodide 完整发行版(压缩后近 200MB)包含 Python 解释器和科学计算堆栈中的关键锚包。默认情况下,用户浏览器会根据需要从官方 Pyodide CDN 获取其部分内容。
--pyodide
CLI 选项(或 pyodide_url
配置选项或 JUPYTERLITE_PYODIDE_URL
环境变量)允许获取压缩的 Pyodide .bz2
文件,或包含此类存档内容的文件夹。这可能来自官方的 Pyodide 发布页面、每夜或 PR 资产,或经过定制的构建。获取后,它将被复制到输出文件夹并配置。