ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Jupytext 文本笔记本完全指南:将 .py 与 .md 文件当作 Jupyter Notebook 打开与使用

Jupytext 文本笔记本完全指南:将 .py 与 .md 文件当作 Jupyter Notebook 打开与使用 开发工具【免费下载链接】jupytextJupyter Notebooks as Markdown Documents, Julia, Python or R scripts项目地址https://gitcode.com/gh_mirrors/ju/jupytext点击查看免费下载导读Jupytext 允许你以纯文本形式如.py、.md文件保存和打开 Jupyter Notebook。本文围绕文本笔记本这一核心能力讲解其在 JupyterLab、Jupyter Notebook 7nb7与经典版 Notebook 中的打开方式深入剖析notebook_extensions配置与默认查看器default viewer机制并结合仓库源码解释其底层实现帮助你在版本控制与日常编辑中获得更流畅的文本化笔记本工作流。什么是文本笔记本Text NotebookJupytext 的核心能力之一是把 Jupyter Notebook 以文本文件的形式保存扩展名通常是.py或.md。与二进制化的.ipynb不同这些文本文件只包含笔记本的输入单元inputs以及经过筛选的元数据关于元数据筛选的细节可参考 advanced-options.md 中的 Metadata filtering 章节。文本笔记本天然适合版本控制它们是标准文本文件git diff可以直接逐行比对不像.ipynb那样因 JSON 结构膨胀而难以审查你可以在任意自己喜欢的编辑器VS Code、Vim、Emacs 等中直接编辑、重构文本笔记本无需启动浏览器。需要注意的是笔记本的输出outputs默认不会保存在磁盘上除非你决定把文本笔记本与常规.ipynb文件配对pair。配对后.ipynb负责保存输出文本文件负责可读性与可审查性两者通过 Jupytext 保持同步。从实现上看Jupytext 提供了自己的 contents managerTextFileContentsManager由 Jupyter 服务端扩展自动激活。启动jupyter lab或jupyter notebook时你会看到类似这样的日志[I 10:28:31.646 LabApp] [Jupytext Server Extension] Changing NotebookApp.contents_manager_class from LargeFileManager to jupytext.TextFileContentsManager正是这个 contents manager 让 Jupyter 能够把.py、.md等文本文件当作 notebook 来读写。如何在 JupyterLab 中打开文本笔记本安装并重启 Jupyter 服务后安装步骤见 install.md你就可以把.py和.md文件当作 notebook 来打开和运行了。使用右键菜单打开在 JupyterLab 中右键点击文本笔记本文件然后选择Open With → Notebook即可补充说明你也可以选择Open With → Jupytext Notebook效果相同若要在笔记本编辑器中打开.md文件的链接需要jupyterlab3.6.0。使用双击打开依赖默认查看器右键菜单中的Open With子菜单允许你在多个查看器viewers之间选择而直接双击文件时JupyterLab 会使用该文档类型的默认查看器打开它。文本笔记本的默认查看器默认被配置为Editor即纯文本编辑器。如果你希望双击文本文件时直接以 notebook 打开可以重新定义每种文档类型的默认查看器。从 Jupytext 1.15.1 起jupytext附带了一个命令行辅助命令只需运行jupytext-config set-default-viewer即可完成默认查看器的重定义更多细节见下文默认查看器详解章节。如何在 Jupyter Notebook 7nb7中打开文本笔记本自 2023 年 7 月起Jupyter Notebook 发布了 7.x 版本即通常所说的 nb7。由于nb7 构建在 JupyterLab 之上上文描述的原理在 nb7 中同样适用也就是说你随时可以右键点击文件选择Open With → Notebook如果你按照上文方法正确配置了默认查看器也可以双击文件直接以 notebook 方式打开。如何在经典版 Jupyter Notebook 中打开文本笔记本早于 nb7 的 Jupyter Notebook即 6.x 及更早版本被称为 classic经典版。在经典版中默认行为与 JupyterLab 相反notebook classic 默认会把脚本和 Markdown 文档当作 notebook 打开。如果你希望用文本编辑器打开它们需要选中该文档然后点击Edit编辑操作此外在 classic 版 Jupyter Notebook 中Jupytext 早期版本jupytext1.16还提供了一个在File 菜单中添加 Jupytext 分节的扩展可自动安装启用。如何决定哪些扩展名被视为 Notebook默认情况下Jupytext 会将.py、.R、.jl、.md、.Rmd、.qmd等扩展名的文档分类为 notebook还会覆盖更多格式。从源码看这一默认集合由src/jupytext/formats.py中的NOTEBOOK_EXTENSIONS定义NOTEBOOK_EXTENSIONS list(dict.fromkeys([.ipynb] [fmt.extension for fmt in JUPYTEXT_FORMATS]))即.ipynb加上 Jupytext 所支持的所有文本格式扩展名。contents manager 在读取文件时会通过all_nb_extensions()检查扩展名是否在配置的 notebook 扩展名列表内见 sync_contentsmanager.py 与 async_contentsmanager.py 中的同名方法若不在列表中则按普通文本文件交由父类处理。如果你希望限制被视为 notebook 的类型可以在 Jupytext 配置文件jupytext.toml 中添加notebook_extensions选项例如notebook_extensions ipynb,md,qmd,Rmd在src/jupytext/config.py中notebook_extensions被定义为Union([List(Unicode(), NOTEBOOK_EXTENSIONS), Unicode()])即既支持列表也支持逗号分隔的字符串加载配置时会自动把字符串按逗号拆分为列表见 config.py 及配置校验逻辑中config.notebook_extensions.split(,)的处理。因此两种写法等价# 写法一字符串自动按逗号拆分 notebook_extensions ipynb,md,qmd,Rmd # 写法二列表 notebook_extensions [ipynb, md, qmd, Rmd]需要注意缩小notebook_extensions后未列入的文本扩展名将不再被 Jupytext 当作 notebook 打开而是作为普通文件由 JupyterLab 的默认编辑器处理。默认查看器详解默认查看器的配置决定了双击文本文件时使用哪个查看器是文本笔记本体验的关键环节。Jupytext 提供了命令行与图形界面两种配置方式其背后统一由 JupyterLab 的 labconfig 设置文件驱动。使用jupytext-config命令行jupytext-config是自 1.15.1 起随jupytext附带的辅助命令其实现位于 jupytext_config.py通过python -m jupytext_config亦可调用。除了上文的set-default-viewer它还支持以下用法只设置部分文档类型的默认查看器例如希望.py和.md文件双击时以 notebook 打开可运行jupytext-config set-default-viewer python markdown查看当前配置jupytext-config list-default-viewer移除某些文档类型的默认查看器设置jupytext-config unset-default-viewer python下面是一段完整的会话示例从 JupyterLab 默认配置开始# 从 JupyterLab 默认配置开始 $ jupytext-config list-default-viewer # 为 2 种文档类型添加默认查看器 $ jupytext-config set-default-viewer python markdown # 检查刚才的设置 $ jupytext-config list-default-viewer python: Jupytext Notebook markdown: Jupytext Notebook # 移除 markdown 的默认查看器 $ jupytext-config unset-default-viewer markdown # 再次检查 $ jupytext-config list-default-viewer python: Jupytext Notebook $源码视角这些子命令直接操作 JupyterLab 的 labconfig 设置文件——默认路径为 Jupyter 配置目录下的labconfig/default_setting_overrides.json见 jupytext_config.py 中--settings-file参数的默认值。读写逻辑封装在 labconfig.py 的LabConfig类中支持的全部文档类型由LabConfig.DOCTYPES定义python、markdown、myst、r-markdown、quarto、julia、r配置写入jupyterlab/docmanager-extension:plugin插件的defaultViewers键下set_default_viewer仅在目标 doctype 尚未配置时才写入Jupytext Notebook不会覆盖已有设置unset_default_viewer会删除对应 doctype 的键list_default_viewer则逐行打印doctype: viewer映射。jupytext-config set-default-viewer不带参数时默认作用于DOCTYPES中的全部七种文档类型与文档正文提到的全局配置用法一致。从 JupyterLab 设置对话框配置如果不使用命令行你也可以在 JupyterLab 中交互式完成配置进入Settings → Advanced Settings Editor在Document Manager插件的 JSON 视图中粘贴以下设置或与你用例匹配的子集{ defaultViewers: { markdown: Jupytext Notebook, myst: Jupytext Notebook, r-markdown: Jupytext Notebook, quarto: Jupytext Notebook, julia: Jupytext Notebook, python: Jupytext Notebook, r: Jupytext Notebook } }下图演示了完整的操作流程这两种方式命令行与设置对话框本质上是同一份配置——jupytext-config直接写default_setting_overrides.json而设置对话框则通过 JupyterLab 的 settings 系统持久化同样的defaultViewers映射因此你可以根据场景自由选择。扩展阅读在 JupyterLab 前端扩展jupyterlab/packages/jupyterlab-jupytext-extension/src/registry.ts中Jupytext 会为myst、r-markdown、quarto等文档类型注册contentType: notebook的文件类型并设置默认打开方式为Notebook同时扩展还复制所有contentType: file且非 base64 的文件类型为*-jupytext-notebook并为其余扩展名注册兜底文件类型jupytext-notebook-file从而保证几乎所有文本文件都能被识别为可打开的 notebook相关实现细节见 registry.ts。总结文本笔记本是 Jupytext 最具代表性的能力之一它以标准文本文件承载 notebook 的输入与关键元数据天然适配版本控制与任意编辑器。围绕它的使用你只需要掌握三件事打开方式JupyterLab / nb7 中右键选择Open With → Notebook或配置默认查看器后直接双击经典版 Notebook 则默认以 notebook 打开需要编辑时手动切换扩展名判定通过jupytext.toml中的notebook_extensions精确控制哪些文本扩展名被视为 notebook默认集合由 formats.py 的NOTEBOOK_EXTENSIONS决定默认查看器用jupytext-config set-default-viewer命令行或 JupyterLab 的Advanced Settings Editor → Document Manager配置defaultViewers两者操作同一份配置底层实现见 labconfig.py。当你需要将输出outputs一并保留时可以进一步将文本笔记本与.ipynb配对形成文本可审查、ipynb 存输出的双文件工作流这也是 Jupytext 在真实项目中最常见的使用形态。赞分享开发工具【免费下载链接】jupytextJupyter Notebooks as Markdown Documents, Julia, Python or R scripts项目地址https://gitcode.com/gh_mirrors/ju/jupytext点击查看免费下载相关推荐深度解析DataStructures.jl中的AVL树如何实现高效平衡查找与插入深度解析DataStructures.jl中的AVL树如何实现高效平衡查找与插入 DataStructures.jl 是Julia语言中一个功能强大的数据结构Jupytext命令行工具使用指南实现Jupyter笔记本与文本格式互转Jupytext命令行工具使用指南实现Jupyter笔记本与文本格式互转 引言 Jupytext作为Jupyter生态中的重要工具提供了强大的命令行接口 C开发工具Jupytext 实战将 SAS 笔记本转换为 Markdown 文档ipynb → md 完整解析Jupytext 实战将 SAS 笔记本转换为 Markdown 文档ipynb → md 完整解析 本文围绕 jupytext 仓库中一份真实的 SAS开发工具上一篇BindingCollectionAdapter核心组件详解ItemBinding与OnItemBind的终极指南下一篇Weave Scope 项目开发与调试指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表