Jupyter Notebook到生产环境:我的踩坑全记录
Lisa Tan | 2026-08-23T09:40:00 | Python, AI
从Jupyter Notebook到生产环境的完整踩坑记录,包括nbconvert、papermill和任务调度
# Jupyter Notebook到生产环境:我的踩坑全记录 数据分析师写好了Jupyter Notebook,说"线上跑一下就行"。接手之后我才知道这个坑有多深。 ## 坑1:全局变量满天飞 Notebook里的cell可以乱序执行,变量到处飘。第一步就是用`nbconvert`转成py文件: ```bash # 转换成Python脚本 jupyter nbconvert --to script analysis.ipynb # 然后手动整理代码,提取函数 ``` ## 坑2:参数化执行 不同客户要跑不同参数,用`papermill`解决: ```python import papermill as pm # 参数化执行notebook pm.execute_notebook( 'template.ipynb', # 模板notebook 'output/result.ipynb', # 输出结果 parameters={ 'customer_id': 'C001', 'start_date': '2024-01-01', 'end_date': '2024-06-30' } ) ``` 在Notebook里标记参数cell(打上parameters标签),papermill会自动注入参数。 ## 坑3:定时调度 ```python # 用dagster调度(比airflow轻量) from dagster import job, op, schedule @op def run_analysis(context): pm.execute_notebook( 'template.ipynb', 'output/result_{}.ipynb'.format( context.run_id ) ) @job def analysis_job(): run_analysis() @schedule(cron_schedule="0 8 * * 1", job=analysis_job) def weekly_schedule(): return {} ``` 总结:**nbconvert整理代码 + papermill参数化 + dagster调度**,三件套搞定Notebook上生产。