在Jupyter Notebook中隐藏代码单元,使用Papermill执行,使用nbconvert转换为PDF

时间:2019-07-31 12:39:55

标签: python-3.x jupyter-notebook nbconvert papermill

我想使用python运行papermill程序(不是命令行)来执行jupyter笔记本,然后将其转换为PDF。这个想法可行,但是我无法隐藏输入单元格。

对于papermillreport_mode = True应该隐藏输入单元格,但是jupyter Classic(https://github.com/nteract/papermill/issues/130)似乎有问题

其他扩展名(例如hide_input或html脚本)也不足够。 也许隐藏单元格的nbconvert模板是一个解决方案,但我没有让它运行。

我的最小代码:

pm.execute_notebook(
        "Input.ipynb",
        "Output.ipynb",
        parameters=dict(id=id),
        report_mode=True,
    )
notebook_filename = "Output.ipynb"

with open(notebook_filename) as f:
    nb = nbformat.read(f, as_version=4)
pdf_exporter = PDFExporter()
pdf_data, resources = pdf_exporter.from_notebook_node(nb)

因此,我正在寻找一种执行笔记本,隐藏输入单元格并将笔记本转换为PDF的方法。我想在nbconvert中使用Python,而不要用作命令行工具,因为脚本应每天运行。

1 个答案:

答案 0 :(得分:1)

我知道您说过“不想使用命令行”,但是在运行subprocess之后让python脚本执行papermill命令又如何呢?与此answer混合:

import subprocess

subprocess.call('jupyter nbconvert --to pdf --TemplateExporter.exclude_input=True Output.ipynb')