拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Jupyter Notebook 7 使用指南:基于 JupyterLab 与 Jupyter Server 的 Web 交互式计算环境

Jupyter Notebook 7 使用指南基于 JupyterLab 与 Jupyter Server 的 Web 交互式计算环境【免费下载链接】notebookJupyter Interactive Notebook项目地址: https://gitcode.com/GitHub_Trending/no/notebookJupyter Notebook 是一个面向交互式计算的 Web 笔记本环境本仓库即该项目当前的 Notebook v7 主线源码。本文以 README.md 为主体结合 notebook/app.py、pyproject.toml 等仓库实现系统讲解 Notebook v7 的版本策略、安装、本地/远程启动、配置方式与新版特性帮助读者完成从传统 v6 到 v7 的迁移并掌握在 Jupyter Server 架构下运行与扩展 Notebook 的完整方法。Notebook v7一次架构级换代Jupyter Notebook 是基于 Web 的交互式计算笔记本环境。当前仓库所维护的 Notebook v7 在架构上与此前版本有本质差异其技术底座为前端基于 JupyterLab 组件构建JupyterLab 4 系列组件后端基于 Jupyter ServerPython 服务端。这一点在 pyproject.toml 的依赖声明中可以得到直接印证notebook包依赖jupyter_server2.19.0,3、jupyterlab4.7.0a1,4.8、jupyterlab_server2.28.0,3、notebook_shim0.2,0.3与tornado6.2.0。其中notebook_shim用于兼容经典 Notebook v6 的配置项见下文 shim 机制tornado则是 Jupyter Server 底层使用的异步 Web 框架。从源码看Notebook v7 的 Python 入口定义在 notebook/app.pyclass JupyterNotebookApp(NotebookConfigShimMixin, LabServerApp): name notebook app_name Jupyter Notebook description Jupyter Notebook - A web-based notebook environment for interactive computing extension_url / default_url Unicode(/tree, configTrue, helpThe default URL to redirect to from /) file_url_prefix /treeJupyterNotebookApp同时继承NotebookConfigShimMixin来自notebook_shim负责把 v6 时代的配置项翻译到 v7和LabServerApp来自jupyterlab_server即JupyterLab 前端 Jupyter Server 后端架构的落地形态。安装包提供的命令行入口也在 pyproject.toml 中声明[project.scripts] jupyter-notebook notebook.app:main即jupyter notebook命令最终调用notebook.app模块的main()即JupyterNotebookApp.launch_instance见 notebook/app.py。需要说明的是Notebook v7 与 v6 在代码组织上是两套体系v6 的 HTML/JavaScript/CSS 资源依赖nbclassic提供新功能开发已全部转移到 v7 主线。维护版本策略与升级路径仓库明确维护最近两个大版本Classic Notebook v6 与 Notebook v7。Notebook v5 已停止维护所有 v5 用户被强烈建议尽快升级到 v6。关于升级需要特别注意的兼容性问题Notebook v5 / v6 的自定义扩展custom extensions与 Notebook v7 不兼容。若你正在使用这类扩展升级到 v7 可能比升级到 v6 需要更多迁移工作若你已计划为 v6 提交新功能 PR官方建议改用Jupyter Server JupyterLab 架构将新功能打包为 server extension 或 JupyterLab prebuilt extension 分发这样新功能才能同时兼容 v7。与版本策略相关的工具链信息可在 buildutils/ 与 RELEASE.md 中进一步查看版本号统一维护在 notebook/_version.py当前仓库版本为7.7.0a1PEP 440 格式a1表示 alpha 预发布版本并附带一个正则解析器与version_info元组供程序化读取。Jupyter NotebookIPython notebook 的语言无关演进Jupyter Notebook 是 Project Jupyter 旗下**语言无关language-agnostic**的 HTML 笔记本应用。2015 年IPython 代码库发生The Big Split™拆分Jupyter notebook 作为其中语言无关的部分独立发布——IPython 3 是最后一个同时包含语言无关代码如 IPython notebook与语言特定代码如 Python 的 IPython kernel的大一统版本。拆分之后的分工是本仓库持续演进语言无关的Jupyter notebook面向不同编程语言的kernel如 Python、R、Julia 等由社区在各自独立的仓库中开发维护。这意味着 Notebook 本身只是一个外壳/工作台实际执行代码的是对应语言的 kernelNotebook 通过 Jupyter 消息协议与 kernel 通信天然具备跨语言能力。仓库中 packages/ 目录下按包拆分的前端模块application、notebook-extension、tree-extension、console-extension、terminal-extension等正是这种模块化、语言无关设计在前端的体现。安装 Notebook本地安装本地安装前请确保已安装pip然后执行pip install notebook安装完成后Python 环境中即包含jupyter-notebook命令以及notebookPython 包包的元数据、依赖与可选依赖定义见 pyproject.toml。项目源码构建开发安装若希望从源码构建 / 参与开发可参考 CONTRIBUTING.md 的说明完成开发环境搭建。构建体系本身可以在 pyproject.toml 中看到notebook包通过hatchlinghatch-jupyter-builder构建构建前会先执行前端构建命令build:prod:release源码目录packages产物输出到notebook/static并把以下资源随 wheel 一并安装notebook/labextension→share/jupyter/labextensions/jupyter-notebook/lab-extensionnotebook/schemas/jupyter-notebook→share/jupyter/lab/schemas/jupyter-notebookjupyter-config/jupyter_server_config.d→etc/jupyter/jupyter_server_config.dnotebook.svg图标与jupyter-notebook.desktop桌面快捷方式也就是说pip install notebook安装的其实是一个前端静态资源 Jupyter Server 扩展 Python 服务端代码的完整组合包。运行 Jupyter Notebook本地运行安装完成后在终端执行jupyter notebook命令会启动 Jupyter Server并在默认浏览器中打开文件管理页/tree。从源码看notebook/app.py 在initialize_handlers中注册了如下页面路由路由Handler页面用途/tree(.*)TreeHandler文件管理Dashboard/notebooks(.*)NotebookHandler笔记本编辑页/edit(.*)FileHandler文本编辑页/consoles/(.*)ConsoleHandler控制台页/terminals/(.*)TerminalHandler终端页/custom/custom.cssCustomCssHandler自定义 CSS其中TreeHandler的行为很有代表性notebook/app.py如果访问路径对应的是目录渲染tree.html目录列表如果路径是笔记本文件.ipynb重定向到/notebooks/path如果是其他普通文件则重定向到/files/path返回原始内容路径不存在时返回 404。NotebookHandler则相反——若路径是目录会重定向回/treenotebook/app.py。这些路由行为均有对应测试用例覆盖见 tests/test_app.py。远程运行远程运行前需要先完成 Jupyter Server 的安全配置如设置密码、配置 token、绑定地址、配置 HTTPS 等详见 Jupyter Server 官方文档中Running a notebook server一节docs/source/configuration.md 也汇总了安全相关文档入口。一个常用于开发/调试的快速启动方式取自本仓库 pyproject.toml 的 pixi 任务jupyter notebook --no-browser --ServerApp.token --ServerApp.allow_remote_accessTrue注意关闭 token 仅适用于可信网络环境公开部署请务必遵循官方安全指南配置认证。Notebook v7 的配置方式与自定义配置框架Jupyter Server traitletsNotebook v7 的所有服务端配置均沿用 Jupyter Server 的 traitlets 配置体系可通过命令行参数、jupyter_notebook_config.py或 JSON 配置文件如jupyter_server_config.json设置。仓库内置的示例配置位于 jupyter-config/jupyter_server_config.d/notebook.json其内容为{ ServerApp: { jpserver_extensions: { notebook: true } } }即通过 Jupyter Server 的扩展机制启用notebook这个 server extension——这正是 Notebook v7以 Jupyter Server 为底座的配置层证据Notebook 本体就是一个 Jupyter Server 扩展。常用应用级配置项从 notebook/app.py 可以提取出 Notebook 应用自身的可配置项配置项类型/默认值说明default_urlUnicode默认/tree访问根路径/时重定向到的默认页面expose_app_in_browserBool默认False是否通过window.jupyterapp向浏览器暴露全局应用实例custom_cssBool默认True是否在页面加载自定义 CSScustom/custom.cssapp_versionUnicode应用版本号默认取notebook/_version.py同时支持两个命令行 flag见 notebook/app.pyjupyter notebook --expose-app-in-browser # 在浏览器暴露 window.jupyterapp jupyter notebook --custom-css # 加载自定义 CSS默认即为 True对应的 flag 隔离性有专门测试保障tests/test_app.py确保这些自定义 flag 不会与 Jupyter Server 自身的 flag 冲突。自定义 CSS模板页面如 app/templates/notebooks_template.html在custom_css为真时会引入{{ base_url }}custom/custom.css样式表。该资源由 notebook/app.py 中的CustomCssHandler提供优先读取{jupyterConfigDir}/custom/custom.css即~/.jupyter/custom/custom.css若不存在则回退到 static 目录旁的custom/custom.css。仓库还自带一份参考样式文件 notebook/custom/custom.css可将其复制到~/.jupyter/custom/custom.css并按需修改。前端界面配置与接口切换Notebook v7 的界面交互由 JupyterLab 组件驱动相关配置以 schema 形式随包分发packages/lab-extension/schema/interface-switcher.jsonInterface Switcher 设置在 Notebook 工具栏rank 990和查看菜单中提供Open in Jupyter Notebook / JupyterLab / NbClassic切换项packages/lab-extension/schema/launch-tree.jsonLaunch Shortcuts 设置在查看菜单rank 1提供Launch Jupyter Notebook File Browser命令。这两个 schema 对应的前端插件实现位于 packages/lab-extension/src/index.tsinterfaceSwitcher插件会根据运行时环境动态决定切换菜单中可用的目标未检测到 Notebook shell 时提供Open in Notebook未检测到 Lab shell 时提供Open in JupyterLab检测到nbclassic扩展启用时提供Open in NbClassic而launchNotebookTree插件负责在浏览器新标签页中打开/tree文件浏览器。主题、暗色模式与国际化Notebook v7 默认内置暗色主题Dark Theme也支持通过安装其他 JupyterLab 主题扩展来换肤。界面显示语言通过安装语言包language pack切换Notebook 7 与 JupyterLab 共享同一套语言包例如安装法语法国语言包pip install jupyterlab-language-pack-fr-FR安装后刷新页面即可在设置中选择新语言。Notebook v7 核心新特性调试器DebuggerNotebook v7 内置新的调试器支持逐 Cell 单步执行、设置断点与检查变量为排查 notebook 代码问题提供图形化工具。仓库对应的前端调试界面截图可见于 ui-tests/test/layout.spec.ts-snapshots/debugger-chromium-linux.pngChromium 与 Firefox 版本均有。实时协作Real Time CollaborationNotebook v7 可接入实时协作扩展与他人共享 notebook 并实时共同编辑。该功能与 JupyterLab 相同以 JupyterLab 扩展形式提供默认未启用需手动安装pip install jupyter-collaboration # 或 conda install -c conda-forge jupyter-collaboration安装完成后需重启 Jupyter Server使扩展加载。Notebook v7 与 JupyterLab 用户可以同时编辑同一份 notebook。目录Table of ContentsNotebook v7 内置目录扩展可在侧边栏中按标题结构导航 notebook默认启用与 JupyterLab 一致。对应测试截图见 ui-tests/test/notebook.spec.ts-snapshots/toc-left-panel-chromium-linux.png。移动端紧凑视图Notebook v7 在移动设备上会自动切换为更紧凑的布局方便随时随地进行代码运行与查看。移动端布局的测试截图见 ui-tests/test/mobile.spec.ts-snapshots/notebook-chromium-linux.png。无障碍Accessibility改进v6 时代的底层文本编辑器 CodeMirror 5 存在严重无障碍问题。Notebook v7 基于 JupyterLab 4其编辑器已升级为完全重写且以无障碍为核心目标之一的 CodeMirror 6因此 Notebook v7 直接继承了这一无障碍改进。支持大量 JupyterLab 扩展由于基于 JupyterLab 构建Notebook v7 可直接使用大量既有 JupyterLab 扩展以pip或conda安装。典型示例代码补全增强LSPpip install jupyter-lsp # 或 conda install -c conda-forge jupyter-lsp幻灯片演示RISE可将 notebook 变成幻灯片放映nbgrader教学作业批改扩展已有适配 Notebook v7 的移植版本该扩展仍在积极开发中。注意扩展与 Notebook v7 的兼容性取决于扩展自身是否适配 JupyterLab 4 / Notebook v7安装前建议查阅扩展的版本要求。保留文档中心式Document-centric体验尽管架构全面切换Notebook v7 依然保留了 Classic Notebook 的文档中心式用户体验以文件管理器 Running 标签页等构成的总览页Dashboard为起点每个 notebook 在独立的浏览器标签页中打开可见的工具与菜单聚焦于当前打开的文档。这与 JupyterLab 的工作台式体验形成区别也是 v7 设计JEP 79明确要保留的第一要义。这种体验直接体现在应用默认路由上——default_url /tree所有文档编辑页/notebooks、/edit等均为独立页面而非多标签工作台notebook/app.py。更多细节可参考仓库内文档 docs/source/notebook_7_features.md 与迁移指南 docs/source/migrate_to_notebook7.md。参与贡献与社区资源开发环境搭建、编码与测试流程见 CONTRIBUTING.md版本发布流程见 RELEASE.md 与 CHANGELOG.md本仓库是 Jupyter 项目的一部分遵循 Jupyter 社区指南与行为准则详见 CONTRIBUTING.md 中引用的 Community Guidelines 说明开源协议为 Modified BSD License见 LICENSE。项目采用共享版权模型每位贡献者对自己提交的改动保留版权源码整体版权归 Jupyter Development Team 共同所有文件头统一使用如下 banner# Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License.小结Jupyter Notebook v7 是一次从技术底座到用户体验的完整换代以 Jupyter Server 为后端、JupyterLab 组件为前端通过notebook_shim平滑承接 v6 时代的配置习惯并带来调试器、实时协作、内置目录、暗色主题、国际化、无障碍提升与海量 JupyterLab 扩展兼容等能力。无论你是从 v5/v6 升级的老用户还是首次接触交互式计算环境的新用户掌握本文介绍的安装、运行、配置与特性清单即可顺利上手这一基于现代架构的 Web 笔记本环境。【免费下载链接】notebookJupyter Interactive Notebook项目地址: https://gitcode.com/GitHub_Trending/no/notebook创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门