如何按顺序调度Jupyter Notebooks自动运行?
自动按序运行Jupyter Notebook工作流方案
一、Anaconda环境内实现方式
1. 用nbconvert命令行工具(最直接)
Jupyter自带的nbconvert可以直接在终端执行Notebook,完全不用打开Jupyter界面:
- 操作步骤:
- 打开Anaconda Prompt(Windows)或终端(Mac/Linux),激活你的Notebook所在的conda环境:
conda activate 你的环境名称 - 在Notebook的目录下,写一个批量执行脚本:
Windows批处理文件(命名为run_all.bat):
Mac/Linux Shell脚本(命名为@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执行完成! pauserun_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执行完成!" - 给用户的操作:把脚本放在Notebook同目录,双击
run_all.bat(Windows)或在终端执行bash run_all.sh(Mac/Linux)就行,不用碰Anaconda或Jupyter的界面。
- 打开Anaconda Prompt(Windows)或终端(Mac/Linux),激活你的Notebook所在的conda环境:
- 注意:
--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
相关产品推荐
相关产品推荐

