这个工具提供了哪些能力
点开任一能力,看清怎么用
每个能力展开后是三件事:它会给你什么、你需要准备什么、哪些必须由你把关。
常见场景:同一个数据分析 notebook 需要用不同日期、参数或数据集反复跑;需要把手工交互 notebook 嵌入自动化数据流水线;想查看 notebook 有哪些参数可调而不必打开文件逐行阅读;需要在 notebook 执行过程中实时落盘,防止长时间运行崩溃丢失结果
帮你把一份 notebook 当成可以反复运行的计算模板。给它换一组参数,它就用指定的内核从头到尾执行一遍,边跑边把结果保存下来;跑出错时也会保留出错位置和报错信息,方便排查。
它会给你什么
- 执行完的 notebook,包括每个单元格的输出、执行顺序和完整运行信息。
- 可选:运行过程的屏幕输出记录文件。
- 失败时:带错误标记的单元格和报错信息。
你需要准备
- 要执行的 notebook 路径,本地、云端、网址都行,路径里还能嵌参数。
- 结果保存路径,不填就不保存。
- 可选:一组要传入的参数值。
由你把关
- 自动保存机制在长时间运行的单元格上是否可靠,要实际运行验证,由你核对。
- 某个单元格失败后后面的单元格不会再执行,已有结果是否可信,由你核对。
- 内核异常退出时的退出码要怎么对接调度系统,由你核对。
帮你给 notebook 换参数。你在外面传入一组参数值,系统会把它们写成一个新单元格插进 notebook,覆盖你原本标好的默认值,这样同一份 notebook 用不同参数就能跑出不同结果。
它会给你什么
- 一个新插入的参数单元格,内容是转换成对应语言写法的参数赋值代码。
- 修改后的 notebook,运行信息里会记录本次用了哪些参数。
- 修改后的 notebook 随后交给执行环节运行。
你需要准备
- 一个 notebook 文件,里面要有一个标了 parameters 标签的单元格,写明默认参数。
- 一组要传入的参数值,或一个参数配置文件。
- 可选:是否隐藏注入单元格的内容。
由你把关
- 非 Python 语言的参数转换是否正确,要靠测试复核,由你核对。
- notebook 没有参数单元格时参数会插到开头,可能改变变量定义顺序,由你核对。
- 内置的时间参数在不同时区的机器上可能不一致,由你核对。
帮你不用打开文件就知道一份 notebook 能调哪些参数。系统静态读取参数单元格,列出每个参数的名称、类型、默认值和说明,运行前就能看清这份 notebook 的参数约定。
它会给你什么
- 一份参数清单,每个参数含名称、推断类型、默认值和帮助说明。
- 命令行下打印的格式化帮助信息。
你需要准备
- notebook 文件路径。
- 可选:一组参数值,只用来解析路径里的占位符。
- notebook 里标了 parameters 标签的参数单元格。
由你把关
- 复杂类型标注的解析是否正确,要靠测试复核,由你核对。
- 多行定义的参数在解析时中间行注释会被丢弃,是否符合预期,由你核对。
- 非 Python 的 notebook 无法自省、会返回空清单,是否接受这一限制,由你决定。
帮你把 notebook 存放在任何地方都能读写。本地文件夹、云存储、网页链接、代码仓库都可以直接当 notebook 的存放位置,系统会根据路径前缀自动选择对应的读写方式,执行环节不用关心文件在哪。
它会给你什么
- 读取到的 notebook 内容。
- 写入目标位置落盘的 notebook 文件。
- 列出某个位置下的所有 notebook 文件。
你需要准备
- notebook 的路径,前缀决定从哪里读写。
- 写入时的 notebook 内容。
- 可选:要检查的文件扩展名,不匹配会警告。
由你把关
- 各云存储的真实读写行为要在配好账号的环境里验证,由你核对。
- 云端读写出错时的重试机制是否按预期触发,由你核对。
- 代码仓库地址的解析对非常规写法是否稳健,由你核对。
帮你给系统加装新能力而不用改它的源代码。执行引擎、存储读写方式和参数语言转换这三个部分都做成了可插拔的接口,第三方包可以把自己的实现注册进来,扩充支持的后端和语言。
它会给你什么
- 注册成功的新引擎、读写方式和语言转换器,可在命令行或路径里直接调用。
- 扩展后的可用执行后端、存储后端和语言集合。
你需要准备
- 第三方包里声明扩展入口的配置文件。
- 或在代码里直接调用注册接口。
- 自定义的执行引擎需要按规范实现执行方法。
由你把关
- 某个扩展包损坏时整个工具会不会跟着崩溃,要实际运行确认,由你核对。
- 多个包注册同一个名称时的优先级规则,由你核对。
- 参数语言转换器不支持包注册这种方式,是设计缺口还是有意为之,由你决定。
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。开始前想清楚要用哪个能力、把对应材料备在手边——每张能力卡展开后有具体清单。
第一次直接复制
帮我安装这个库:https://github.com/nteract/papermill 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。
别这样用
这些判断,仍然由你负责
- 忘记给 notebook 添加 parameters 标签——没有标记参数 cell 时传入的参数不会被注入
- 把 papermill 当作替代版本控制的工具——它生成的是带运行结果的 notebook 副本,而不是替代 git 的 notebook 版本管理
- 在参数 cell 中写复杂逻辑——参数 cell 应该只定义变量,复杂的参数处理逻辑放在后续 cell
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
处理机制
- 01
核心处理链
让 Jupyter Notebook 变成可用不同参数批量执行的参数化计算单元
已核对范围
- 只读上游快照 本地只读快照,commit e4e4ddd362037309c53ab5230541759707779687
- papermill/execute.py(executenotebook、preparenotebookmetadata、removeerrormarkers、raiseforexecutionerrors)
- papermill/engines.py(Engine、NBClientEngine、NotebookExecutionManager、PapermillEngines)
- papermill/clientwrap.py(PapermillNotebookClient、papermillexecutecells)
- papermill/cli.py(CLI 参数与退出码)
- papermill/iorw.py(loadnotebooknode、writeipynb)
- README.md、docs/usage-execute.rst
- README.md(Parameterizing a Notebook 段)
仍待核对
- 未运行真实 notebook 执行
- 未验证逐 cell 落盘(requestsaveoncellexecute)的实际写入时机
- 未验证 autosave 指数退避的实际触发
- 未验证 starttimeout/executiontimeout 的超时行为
- 未验证 DeadKernel 退出码 138 的实际触发
- 未运行真实 notebook 验证注入 cell 的实际位置与覆盖行为
- 未验证非 Python 语言(R/Scala/Julia/Matlab/C/F/Powershell/Bash)translator 的 codify 输出正确性
- 未验证 Black 格式化(PythonTranslator.codify 的 black 调用)在无 black 时的降级
读取版本
e4e4ddd362037309c53ab5230541759707779687许可
BSD-3-Clause
最近核对
内容 2026-07-10
Stars 2026-07-11