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

Hide code cells in Jupyter Notebook, execute with Papermill, transform to PDF with nbconvert

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

因为 papermill report_mode = True 应该隐藏输入单元格,但是 jupyter Classic (https://github.com/nteract/papermill/issues/130)

似乎有问题

其他扩展如 hide_input 或 html 脚本也不够。 也许隐藏单元格的 nbconvert 模板是一个解决方案,但我没有得到 运行ning.

我的最小代码:

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。我想在 Python 中使用 nbconvert 而不是作为命令行工具,因为脚本应该每天 运行。

我知道你说你 "don't want to use command line",但是让你的 python 脚本在 运行 papermill 之后执行 subprocess 命令怎么样?与此混合 :

import subprocess

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