常见问题 (FAQ)#
以下是一些常见问题。单击问题将被引导到我们文档或 GitHub 存储库中的相关信息。
一般#
用法#
Notebook#
我的 Notebook 在 iframe 中显示单元格输出。来回滚动时它们会被重置。
自 JupyterLab v4 以来,Notebook 渲染经过优化,只显示所需的单元格。这会与 iframes 产生副作用。
当前的解决方案是将设置 Notebook => Windowing mode 设置为
defer
或none
。这会严重影响 JupyterLab 在打开长 Notebook 和/或大量文件时的性能。
我的 Notebook 注入了自定义 CSS,导致了意外的滚动问题(例如,无法滚动到活动单元格)。
属性清理#
为什么 Markdown 中的 id
和 name
属性被删除了?
JupyterLab 清理这些属性是为了防止像 DOM 劫持攻击这样的安全风险。有关更多详细信息,请参阅 DOM 劫持防范指南。此外,请参阅相关的安全公告 CVE-2024-43805。
解决方法: - 在 Markdown 单元格中使用标题来安全地创建锚点。 - (可选)在 Settings -> Settings Editor -> Sanitizer 中启用“Allow named properties”设置(不建议用于不受信任的来源)。
Jupyterlab 如何处理锚点导航?
在清理过程中,DOM 元素的 id 属性被替换为 data-jupyter-id 属性。当解析 URL 时,如果存在片段(例如 #my-id),它将找到并滚动到具有相应 data-jupyter-id 的元素。
提示和技巧#
如何每次都用一个干净的工作区启动 JupyterLab?
将 c.ServerApp.default_url = '/lab?reset'
添加到您的 jupyter_server_config.py
中。有关更多信息,请参阅 如何创建 jupyter_server_config.py。
开发#
在经典的 Notebook 中,我可以使用单元格输出的自定义 Javascript 来程序化控制 Notebook。在 JupyterLab 中我能做同样的事情吗?
JupyterLab 的构建旨在支持广泛的可扩展性,包括基于 Notebook 输出的动态行为。要访问此可扩展性,您应该编写一个自定义 JupyterLab 扩展。如果您想响应用户在 Notebook 中执行某些代码而触发某些行为,您可以输出自定义 mimetype (MIME 渲染器插件)。我们目前不允许从 Javascript 渲染器访问 JupyterLab API,因为这会将内核和 Notebook 输出与 JupyterLab 绑定,并使其难以被其他前端支持。有关更多讨论和潜在的替代解决方案,请参阅问题 #4623 和 #5789。
每夜版本#
JupyterLab 项目不会向 PyPI 发布每夜版本。
但是 JupyterLab 在 CI 上为 main
分支上的每次提交构建,并生成 wheel 和源分发作为 GitHub Actions 工件。这些工件可以下载并在本地安装。
从 main
上最新提交下载 JupyterLab wheel
点击其中一个工作流运行
在“Artifacts”部分下,点击
jupyterlab-releaser-dist-<build-number>
下载存档在本地,解压存档
使用
python -m pip install ./jupyterlab-x.y.z.whl
安装
注意
下载工件需要登录 GitHub。