【问题标题】:Add papermill parameters to notebook manually手动将造纸厂参数添加到笔记本
【发布时间】:2021-12-07 15:25:04
【问题描述】:

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

上下文:

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

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

  1. 将通用笔记本存储为 .py 文件,并在版本控制存储库中包含参数
  2. 将python脚本.py转换为jupyter notebook.ipynb
  3. 通过 papermill 运行 .ipynb 并将参数传递给它
  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.

版本:

  • 造纸厂 = 2.2.3
  • jupytext = 1.12.0

【问题讨论】:

    标签: python jupyter papermill


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 有趣。添加 % ## (在我的情况下)确实消除了造纸厂发出的警告。但是,如果我在与“参数”标签相同的单元格中添加像您这样的打印语句,它不会打印任何内容。如果我将打印语句移动到不同的单元格,它会打印正确的输入值。事实上,如果我根本不添加任何参数标签,我的笔记本实际上似乎工作得很好(除了警告纸厂打印)。
    猜你喜欢
    • 1970-01-01
    • 2016-09-16
    • 2017-03-24
    • 2013-05-27
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多