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

如何程序化运行Jupyter Notebook并注入宿主变量以生成报告?

程序化注入变量到Jupyter Notebook执行上下文的方案

完全可以通过nbconvert的ExecutePreprocessor实现将宿主Python解释器的变量注入Notebook的执行上下文,以下是具体实现步骤和代码示例:

核心思路

ExecutePreprocessor在执行Notebook时,可通过自定义执行命名空间的方式,将宿主环境中的变量直接传入Notebook的全局作用域,无需修改模板Notebook的代码结构。

步骤1:准备环境与依赖

确保已安装所需包:

pip install nbconvert nbformat

步骤2:编写模板Notebook

在模板中直接使用待注入的变量名即可,无需额外语法。例如模板report_template.ipynb的代码单元格可以写:

# 直接使用宿主注入的report_data变量
print(f"报告标题: {report_data['title']}")
print(f"生成日期: {report_data['date']}")

import matplotlib.pyplot as plt
months = list(report_data['sales'].keys())
values = list(report_data['sales'].values())

plt.bar(months, values)
plt.title(report_data['title'])
plt.ylabel("销售额")
plt.show()

步骤3:宿主代码实现变量注入与Notebook执行

import nbformat
from nbconvert.preprocessors import ExecutePreprocessor
from nbconvert import HTMLExporter

# 1. 宿主环境中定义的报告数据
report_data = {
    "title": "2024年Q1销售报告",
    "sales": {"1月": 12000, "2月": 15000, "3月": 18000},
    "date": "2024-04-01"
}

# 2. 加载模板Notebook文件
with open("report_template.ipynb", "r", encoding="utf-8") as f:
    nb = nbformat.read(f, as_version=4)

# 3. 配置执行处理器,传入自定义命名空间
# timeout:执行超时时间(秒),kernel_name:指定使用的Python内核
ep = ExecutePreprocessor(timeout=600, kernel_name="python3")

# 关键操作:将宿主变量传入Notebook的执行命名空间
execution_context = {"report_data": report_data}
ep.preprocess(nb, {"metadata": {"path": "./"}, "namespace": execution_context})

# 4. 保存执行后的Notebook(可选)
with open("executed_report.ipynb", "w", encoding="utf-8") as f:
    nbformat.write(nb, f)

# 5. 转换为静态HTML报告
html_exporter = HTMLExporter()
html_exporter.exclude_input = True  # 可选:隐藏代码单元格,只保留输出内容
html_body, resources = html_exporter.from_notebook_node(nb)

with open("sales_report.html", "w", encoding="utf-8") as f:
    f.write(html_body)

注意事项

  • 确保内核名称kernel_name与宿主环境的Python内核一致(通常为python3或python)
  • 如果模板Notebook依赖第三方库(如matplotlib),需提前在宿主环境安装
  • 若需要注入多个变量,直接在execution_context字典中添加键值对即可
  • 超时时间timeout可根据Notebook的计算复杂度调整,避免执行中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:33:20