1

是否可以手动将造纸厂参数添加到 jupyter 笔记本中,例如在编辑器中?是否可以将造纸厂参数添加到 .py 文件并在转换为 .pynb 文件时保留它们?

语境:

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

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

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

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

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

编辑

醋栗的答案似乎是正确的。

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

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

版本:

  • 造纸厂 = 2.2.3
  • jupytext = 1.12.0
4

1 回答 1

1

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

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

现在,您将能够为my_text使用 Papermill 注入不同的价值。

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

于 2021-10-22T05:16:01.927 回答