手动将造纸厂参数添加到笔记本

Add papermill parameters to notebook manually

是否可以手动将 papermill 参数添加到 jupyter notebook,例如在编辑器中?是否可以将 papermill 参数添加到 .py 文件并让它们在转换为 .pynb 文件时保持不变?

上下文:

我正在通过 Papermill 以自动化方式处理 运行ning jupyter 笔记本。我想手动向笔记本添加参数,而不是使用 jupyter 或 jupyter lab 界面。理想情况下,可以先将这些参数添加到 python 脚本 .py 文件中。将 .py 文件转换为 .ipynb 文件后,参数将保留。

我想要的工作流程如下所示:

  1. 在版本控制存储库中将通用笔记本存储为带有参数的 .py 文件
  2. 将python脚本.py转换为jupyter notebook.ipynb
  3. 运行 .ipynb 通过 papermill 并将参数传递给它
  4. 使用 nbconvert 生成无代码的输出 pdf(使用 exclude_input 参数)

第 1-3 步将 运行 通过可自动执行的脚本进行。我想使用 jupytext 来避免存储笔记本及其所有关联的元数据。目前,我能找到的向笔记本添加参数的唯一方法是通过 jupyter/(lab) 接口添加它们。然后我就可以 运行 带造纸机的笔记本了。但是,这不适用于 jupytext 转换。

*请注意,我会为此添加“jupytext”标签,但它还不存在,我没有足够的代表来创建

编辑

gooseberry 的回答似乎是正确的。

但是,为了通过 papermill 注入参数,实际上似乎没有必要向笔记本添加参数标签。虽然 papermill 会发出 no cell with tag parameters found in notebook 警告,但它仍会注入参数。此外,您从 papermill 输出的笔记本将有一个新单元格:

    # Parameters
    parm1 = <val passed to papermill>
    parm2 = <val passed to papermill>
    etc.

版本:

这取决于您为 .py 文件选择的格式,但假设您选择了“百分比”格式,其中每个新单元格都用 #%% 标记,以添加您编写的标签:

#%% tags=["parameters"]
my_text = ""
print(my_text)

现在您可以使用 Papermill 注入 my_text 的不同值。

您可以在此处找到有关格式的更多信息:https://jupytext.readthedocs.io/en/latest/formats.html