开发工具【免费下载链接】jupytextJupyter Notebooks as Markdown Documents, Julia, Python or R scripts项目地址https://gitcode.com/gh_mirrors/ju/jupytext点击查看免费下载本篇指南以仓库demo/get_started.md这份“上手演示笔记本”为核心讲解 Jupytext 最常用的一条工作流安装并激活插件后通过 JupyterLab 命令面板将普通.ipynb笔记本**配对Pair**为 MyST / Markdown 文本笔记本实现一次保存同时产出.ipynb与.md两份文件。你会了解配对命令背后的元数据机制、底层格式解析与同步逻辑并掌握如何用demo/目录中的多格式示例笔记本做进一步实验为后续把文本笔记本纳入 Git 版本控制、IDE 协作打好基础。前置准备安装 Jupytext 并激活 JupyterLab 插件在本地跑通本指南前需要先在你的 Python 环境中安装 Jupytext该环境必须同时用于 Jupyter然后重启 JupyterLab 服务。官方推荐两种安装方式pip install jupytext或通过 condaconda install jupytext -c conda-forge安装并重启后Jupytext 在 JupyterLab 中的“激活”体现在两类变化上.py、.md等文本文件被注册为notebook 类型在文件列表中显示笔记本图标右键即可“以笔记本方式打开”命令面板与主菜单中出现 Jupytext 专属命令用于创建文本笔记本、配对与取消配对。这一行为在源码中可以直接印证JupyterLab 扩展在 registry.ts 中调用docRegistry.addFileType把.mdmarkdown、.myst、.Rmd、.qmd以及各内核语言的脚本扩展注册为contentType: notebook并默认交给 Notebook 文档工厂打开扩展入口 index.ts 声明为autoStart: true随 JupyterLab 启动自动加载。如果你使用的是 Binder参考 binder/postBuild构建脚本已预先执行了pip install jupytext及扩展配置进入 Binder 环境即可直接体验无需重复安装。通过命令面板将笔记本配对为 MyST Markdowndemo/get_started.md对应的演示笔记本是一份“全新”的.ipynb——它没有附加任何特殊的 Jupytext 元数据。要让 Jupytext 在保存时自动输出多种格式只需三步在 JupyterLab 顶部的View菜单中点击Activate Command Palette激活命令面板在面板中输入Jupytext会看到一组命令每条命令对应一种自动保存的文本格式选择Pair notebook with MyST Markdown。完成之后保存这份.ipynbJupytext 除了保存.ipynb本身还会在同目录自动生成一份get_started.md两者构成“配对笔记本”。从源码看这些配对命令并非硬编码写死而是由扩展在启动时根据 tokens.ts 中定义的JUPYTEXT_PAIR_COMMANDS_FILETYPE_DATA批量注册的其中就包含md:mystPair Notebook with MyST Markdown、md、Rmd、qmd、auto:percent、auto:light等条目index.ts 为每个条目生成jupytext:pair-nb-with-format命令并同时挂入命令面板category: Jupytext与 JupyterLab 主菜单下的Jupytext子菜单。如上图所示命令面板中不仅能看到 “Pair Notebook with MyST Markdown”还并列着 light Script、percent Script、Markdown、R Markdown、Quarto 等多种配对目标以及Custom pairing和Unpair Notebook两个特殊条目——它们对应的正是“自定义配对”与“解除配对”。配对背后的机制一切由 jupytext 元数据驱动“Jupytext 怎么知道该把笔记本保存成什么格式”答案是配对信息以 YAML 形式写在笔记本的jupyter级元数据中。demo/get_started.md文件开头就是配对完成后写入.ipynb元数据并同步渲染到文本文件头部的样例jupyter: jupytext: formats: ipynb,md text_representation: extension: .md format_name: markdown format_version: 1.1 jupytext_version: 1.1.6 kernelspec: display_name: Python 3 language: python name: python3关键字段含义如下字段作用jupytext.formats配对格式清单逗号分隔ipynb,md表示保存时同时维护.ipynb与.md两份文件jupytext.text_representation文本表示的“身份信息”扩展名、格式名、格式版本与生成它的 Jupytext 版本jupytext_version用于格式兼容性检查低版本 Jupytext 读取高版本格式时会给出升级提示kernelspec内核信息Jupytext 据此推断脚本语言的auto扩展名见下文在笔记本中直接观察元数据原文档提供了一段代码让你在笔记本里实时查看配对所写入的元数据import nbformat as nbf from IPython.display import JSON notebook nbf.read(./get_started.ipynb, nbf.NO_CONVERT) JSON(notebook[metadata])每当你从命令面板选择不同的配对格式并保存笔记本metadata中的jupytext.formats就会随之变化——这正说明配对状态完全由这份元数据承载文件本身只是它的投影。源码级验证元数据如何被读写与校验写入端JupyterLab 扩展commands.ts 中的executePairCommand负责切换配对读取当前jupytext元数据 → 增删formats中的条目保证同一扩展名只出现一次、当前文件扩展名不可被解除→ 通过setMetadata(jupytext, ...)写回模型若formats为空则删除整个jupytext元数据段。同一个文件还实现了 “Include Metadata” 命令commands.ts通过notebook_metadata_filter: -all开关是否在文本文件中写入 YAML 头。解析端Python 核心库formats.py 的long_form_one_format负责把ipynb,md这样的紧凑字符串解析为结构化字典{extension: ...}等format_name_for_ext 则从元数据的text_representation或formats中反推出该文件应当使用的格式名。当格式串中写auto时会依据language_info/kernelspec推断脚本扩展名auto_ext_from_metadata见 formats.py。版本校验check_file_versionformats.py会核对text_representation.format_version与当前安装版本支持的读取范围如 markdown 格式支持读取 1.0–1.3不匹配时抛出带明确升级建议的JupytextFormatError。保存与读取时发生了什么配对文件的同步逻辑配对意味着同一笔记本存在多个文件副本因此“保存时写哪里、读取时以谁为准”必须有一套明确规则。核心实现位于 pairs.py 的latest_inputs_and_outputs它会遍历所有配对路径比较各文件的时间戳——对每个配对格式.ipynb文件被视为输出的唯一载体保存笔记本运行结果其余文本文件.md、.py等被视为输入来源读取时选择时间戳最新的输入文件并以.ipynb中的输出做合并因此你编辑.md后回到 Jupyter输入会更新而输出仍保留写入时则同时刷新所有配对格式的文件。这也解释了原文档“保存.ipynb会顺带生成/更新.md”的现象以及常见工作流“在 IDE 里改.py/.md回到 Jupyter 中执行 Reload Notebook from Disk 即可拿到最新编辑”的原理。进一步实验demo 目录里的多格式对比原文档最后提示我们打开仓库demo/目录中的World population.ipynb。这份示例笔记本默认配置了多格式配对保存一次即可对比各文本格式的观感差异。与其同目录的姊妹文件给出了真实样例World population.md—— 普通 Markdown 格式其 YAML 头写明formats: ipynb,.pct.py:percent,.lgt.py:light,.spx.py:sphinx,md,Rmd,.pandoc.md:pandoc见 World population.mdWorld population.myst.md—— MyST MarkdownWorld population.pandoc.md—— Pandoc MarkdownWorld population.Rmd—— R MarkdownWorld population.pct.py—— percent 脚本格式World population.lgt.py—— light 脚本格式World population.spx.py—— Sphinx-gallery 脚本格式不同格式各有适用场景代码居多的笔记本适合percent# %%分隔单元格以文档为主的笔记本适合 Markdown 系格式MyST 与 Jupyter Book 生态互操作良好Quarto/Pandoc 各有侧重。百分号格式的写法可参考 demo/vscode/notebook.pyYAML 头声明formats: ipynb,py:percent正文用# %%划分代码单元格、# %% [markdown]划分 Markdown 单元格。此外这些文本文件在 JupyterLab 中都被当作笔记本展示文件类型注册见上文 registry.ts因此可以直接右键打开运行或直接“新建文本笔记本”后从命令面板的 Jupytext 分类中选择格式起步。命令行入口与后续进阶配对功能同样可以从命令行触发适合脚本化与批量处理命令来源README.md# 将 notebook.ipynb 与 percent 格式的 .py 配对 jupytext --set-formats ipynb,py:percent notebook.ipynb # 同步配对文件输入取最近更新的配对文件 jupytext --sync notebook.py # 格式转换-o 指定输出文件 jupytext --to ipynb notebook.py # 管道输出到格式化/检查工具 jupytext --pipe black notebook.ipynb如果希望整个目录下的所有笔记本默认配对可以在笔记本目录根放一份配置文件如jupytext.tomlformats ipynb,py:percent配对文本笔记本之后就可以把它当作普通文本文件纳入 Git 版本控制、在 IDE 中编辑重构并与协作者进行干净可读的 diff 协作相关完整文档位于本仓库 website/src/content/docs 下的 formats、getting-started、integrations、reference 等章节可作为继续深入的入口。小结从demo/get_started.md出发你已走通了 Jupytext 的核心闭环——命令面板一键配对、jupytext.formats元数据驱动、保存时多格式同步、读取时最新输入与.ipynb输出合并。接下来不妨按原文档建议打开demo/World population.ipynb尝试不同格式的输出再结合命令行与配置文件把 Jupytext 接入自己的版本控制与 IDE 工作流。赞分享开发工具【免费下载链接】jupytextJupyter Notebooks as Markdown Documents, Julia, Python or R scripts项目地址https://gitcode.com/gh_mirrors/ju/jupytext点击查看免费下载相关推荐Jupytext 中 Notebook 的 Markdown 表示以 PowerShell 笔记本的 ipynb→md 转换为例Jupytext 中 Notebook 的 Markdown 表示以 PowerShell 笔记本的 ipynb→md 转换为例 Jupytext 的核心能力开发工具Bloom在生产环境的应用Crisp如何处理250 RPS的API流量Bloom在生产环境的应用Crisp如何处理250 RPS的API流量 Bloom是一款强大的HTTP REST API缓存中间件专为在负载均衡器和RESTanomalib 中的 GLASS 模型基于梯度上升的统一异常合成策略详解anomalib 中的 GLASS 模型基于梯度上升的统一异常合成策略详解 GLASSA Unified Anomaly Synthesis Strateg开发工具上一篇【亲测免费】 探索ROS 1与ROS 2之间的桥梁ros1_bridge下一篇【亲测免费】 推荐开源项目Vue Designer —— Vue组件设计利器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考