如何手动为jupyter notebook及py文件添加papermill参数并在转换后留存
问题解答
两个需求都可以实现,无需通过Jupyter/JupyterLab界面操作,也可以保证.py转.ipynb后参数配置正常生效。
具体实现方法
你使用jupytext的话,只需要在.py文件中按照jupytext的单元格标记规则,给参数单元格加上parameters标签即可,以常用的percent格式py文件为例:
# %% 普通代码单元格 import pandas as pd import os # %% tags=["parameters"] # 此处定义参数默认值,papermill运行时会覆盖此处的赋值 input_path = "./default_input" run_date = "2024-01-01" batch_size = 100 # %% 后续业务逻辑单元格 df = pd.read_csv(f"{input_path}/data_{run_date}.csv")
执行转换命令即可生成带参数标签的ipynb文件:jupytext --to ipynb <notebook>.py
转换生成的.ipynb文件中,上述标记的参数单元格会自动携带parameters标签,papermill可以直接识别,不会抛出警告,完全适配你预期的自动化工作流。
补充说明
你提到的无参数标签也能注入参数的情况,确实是papermill 2.0+版本的特性:即使没有找到带parameters标签的单元格,papermill也会自动在notebook的最开头插入一个参数单元格写入传入的参数值,仅会抛出对应警告不影响运行。不过仍然建议手动添加参数标签:
- 可以自定义参数默认值,不传参时也能正常运行notebook
- 参数注入位置可控,不会打乱原有代码的执行顺序
- 避免无关警告输出
内容的提问来源于stack exchange,提问作者Bryce
相关产品推荐
相关产品推荐

