You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Jupyter notebook按顺序自动依次运行?

可行的实现方案整理

下面是3种无需合并代码的落地方式,可根据自己的使用场景选:

方案1:使用nbconvert命令行批量执行(无需修改原有notebook,最轻量化)

Jupyter环境默认自带nbconvert工具,直接在终端按顺序写执行命令即可,也可以写成shell脚本(Windows下可写批处理/PowerShell脚本)复用:

# Linux/macOS 示例,前一个执行成功才会跑下一个
jupyter nbconvert --execute --to notebook --inplace 第一个文件.ipynb && \
jupyter nbconvert --execute --to notebook --inplace 第二个文件.ipynb && \
jupyter nbconvert --execute --to notebook --inplace 第三个文件.ipynb

参数说明:

  • --execute:触发notebook所有单元格依次执行
  • --to notebook:输出文件保持notebook格式
  • --inplace:直接把运行结果写入原文件,不需要保留原文件可以用这个参数;如果要保留原文件就去掉该参数,加--output 输出文件名.ipynb指定结果输出路径
  • 用&&连接命令表示前一个执行成功才执行下一个,不需要这个判断的话Linux/macOS换成;,Windows换成&即可

方案2:主控notebook调用执行(对应你提到的第二种思路)

新建一个空白的主控notebook,用两种方式实现顺序调用:

方式A:%run魔法命令(无额外依赖)

直接在主控notebook的单元格里按顺序写命令即可:

%run ./第一个文件.ipynb
%run ./第二个文件.ipynb
%run ./第三个文件.ipynb

该方式会把目标notebook的代码放到当前内核执行,运行结果会直接显示在主控notebook里,注意如果多个notebook有重名变量,后面的会覆盖前面的。

方式B:papermill库执行(变量隔离,适合复杂场景)

papermill是专门用于批量参数化运行notebook的工具,每个文件独立运行不会出现变量互相覆盖的问题:

  1. 先安装依赖:pip install papermill
  2. 在主控notebook里写执行代码:
import papermill as pm

# 按执行顺序填写你的notebook路径
run_list = [
    "./第一个文件.ipynb",
    "./第二个文件.ipynb",
    "./第三个文件.ipynb"
]

for nb_path in run_list:
    # 自定义结果输出路径,要覆盖原文件的话就直接填nb_path
    output_path = nb_path.replace(".ipynb", "_已执行.ipynb")
    pm.execute_notebook(
        input_path=nb_path,
        output_path=output_path,
        parameters=None # 需要给notebook传自定义参数可以在这里配置
    )

方案3:工作流工具调度(适合需要定期重复执行的场景)

如果这套notebook需要定期重复跑,可以用crontab(Linux/macOS)、Windows任务计划程序,或者Airflow、Prefect这类工作流工具,把前面的nbconvert命令或papermill脚本配置成顺序执行的任务,不需要每次手动触发。

注意事项
  • 执行前关闭所有打开状态的待运行notebook,避免内核占用冲突
  • 如果不同notebook用的虚拟环境不一样,执行命令时加--kernel 内核名称参数指定对应内核

内容的提问来源于stack exchange,提问作者Sadaf Shafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:15:04