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

如何按顺序调度Jupyter Notebooks自动运行?

自动按序运行Jupyter Notebook工作流方案

一、Anaconda环境内实现方式

1. 用nbconvert命令行工具(最直接)

Jupyter自带的nbconvert可以直接在终端执行Notebook,完全不用打开Jupyter界面:

  • 操作步骤:
    1. 打开Anaconda Prompt(Windows)或终端(Mac/Linux),激活你的Notebook所在的conda环境:conda activate 你的环境名称
    2. 在Notebook的目录下,写一个批量执行脚本:
      Windows批处理文件(命名为run_all.bat):
      @echo off
      conda activate 你的环境名称
      jupyter nbconvert --to notebook --execute 第一个Notebook.ipynb --inplace
      jupyter nbconvert --to notebook --execute 第二个Notebook.ipynb --inplace
      REM 依次添加剩下7个Notebook的执行命令
      jupyter nbconvert --to notebook --execute 第九个Notebook.ipynb --inplace
      echo 所有Notebook执行完成!
      pause
      
      Mac/Linux Shell脚本(命名为run_all.sh):
      #!/bin/bash
      conda activate 你的环境名称
      jupyter nbconvert --to notebook --execute 第一个Notebook.ipynb --inplace
      jupyter nbconvert --to notebook --execute 第二个Notebook.ipynb --inplace
      # 依次添加剩下7个Notebook的执行命令
      jupyter nbconvert --to notebook --execute 第九个Notebook.ipynb --inplace
      echo "所有Notebook执行完成!"
      
    3. 给用户的操作:把脚本放在Notebook同目录,双击run_all.bat(Windows)或在终端执行bash run_all.sh(Mac/Linux)就行,不用碰Anaconda或Jupyter的界面。
  • 注意:--inplace会覆盖原Notebook的输出内容,如果想保留原文件,去掉这个参数,执行后会生成带_executed后缀的新Notebook文件。

2. 用conda-project管理依赖与工作流(适合复杂环境)

如果你的Notebook依赖包多、环境配置复杂,conda-project可以帮你统一管理环境和运行流程:

  • 先安装工具:conda install -c conda-forge conda-project
  • 在Notebook目录下创建conda-project.yml文件,内容示例:
    name: your_env_name
    channels:
      - defaults
      - conda-forge
    dependencies:
      - python=3.9
      - jupyter
      - pandas
      - openpyxl  # 处理Excel所需的包,根据你的需求调整
      - numpy
    commands:
      run_all: |
        jupyter nbconvert --to notebook --execute 第一个Notebook.ipynb --inplace
        jupyter nbconvert --to notebook --execute 第二个Notebook.ipynb --inplace
        # 依次添加剩下的Notebook执行命令
        jupyter nbconvert --to notebook --execute 第九个Notebook.ipynb --inplace
    
  • 用户运行:打开Anaconda Prompt进入该目录,执行conda-project run run_all,工具会自动激活环境并按顺序执行所有Notebook。

二、外部工具实现方式

1. 用Python脚本串联执行(灵活可控)

用nbclient库直接在Python脚本里调用Notebook执行逻辑,方便添加错误处理或自定义逻辑:

  • 安装依赖:pip install nbclient nbformat
  • 编写run_all.py脚本:
    from nbclient import NotebookClient
    from nbformat import read, write
    
    # 按执行顺序列出所有Notebook的路径
    notebook_list = [
        "第一个Notebook.ipynb",
        "第二个Notebook.ipynb",
        # 补充剩下的Notebook路径
        "第九个Notebook.ipynb"
    ]
    
    for nb_path in notebook_list:
        print(f"开始执行: {nb_path}")
        try:
            with open(nb_path, 'r', encoding='utf-8') as f:
                nb = read(f, as_version=4)
            # 设置超时时间,根据你的大文件解析需求调整(单位:秒)
            client = NotebookClient(nb, timeout=1200)
            client.execute()
            # 保存执行后的结果
            with open(nb_path, 'w', encoding='utf-8') as f:
                write(nb, f, version=4)
            print(f"{nb_path} 执行完成")
        except Exception as e:
            print(f"{nb_path} 执行出错: {str(e)}")
            # 可选:出错时停止后续执行,去掉下面的注释
            # break
    print("所有任务执行结束")
    
  • 用户操作:激活conda环境,进入脚本目录,执行python run_all.py即可。

2. 制作桌面快捷方式(零技术门槛)

把执行命令打包成桌面快捷方式,用户双击就能运行:

  • Windows:右键桌面→新建→快捷方式,目标栏填入:
    cmd /k "conda activate 你的环境名 && cd /d "你的Notebook完整目录路径" && jupyter nbconvert --to notebook --execute 第一个Notebook.ipynb --inplace && ... && jupyter nbconvert --to notebook --execute 第九个Notebook.ipynb --inplace && echo 执行完成 && pause"
    
    填写完后给快捷方式起个名字(比如“运行数据验证”),用户双击就能启动。
  • Mac:打开Automator→新建“应用”→选择“运行Shell脚本”,输入命令:
    source ~/.bash_profile  # 或source ~/.zshrc,根据你的终端配置
    conda activate 你的环境名
    cd 你的Notebook完整目录路径
    jupyter nbconvert --to notebook --execute 第一个Notebook.ipynb --inplace
    # 依次添加剩下的Notebook执行命令
    jupyter nbconvert --to notebook --execute 第九个Notebook.ipynb --inplace
    echo "执行完成"
    
    保存为应用程序,用户双击即可运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:08:26