0

我有一个笔记本,可以重新格式化探索性分析笔记本的结果以导出到幻灯片。此笔记本根据传入的“部件类型”和“参数”的数量创建新单元格。我使用以下代码生成一个新单元格,当我在笔记本中测试时它可以工作:

def create_code_cell(cell_content, replace=False,):
    shell = get_ipython()
    payload = {
        "source":"set_next_input",
        "text":cell_content,
        "replace":replace,
    }
    shell.payload_manager.write_payload(payload, single=False)

我遇到的问题是,当我用 Papermill 执行时,这个函数没有创建单元格。

如果我打开从 Papermill 创建的新笔记本,然后单击 Cells=>Run 生成所有单元格。

谢谢您的帮助!

4

1 回答 1

1

Papermill 在后台使用 nbConvert,它运行 IPython 外壳而无需启动任何 Web 浏览器消息传递协议。如果您在 shell 中运行 IPython 并运行您给出的命令,则不会生成任何输出。通过在浏览器中运行笔记本设置的消息传递协议是侦听这些有效负载更新并从中创建新单元的内容。

我在笔记本中以编程方式创建单元格的唯一其他解决方案依赖于 JavaScript 来运行,如果你不在浏览器中运行,也不会执行,也就是 nbConvert。

也许这正是您已经拥有的,但是您能否设置生成的笔记本,使得当用户第一次在浏览器中运行它时,笔记本会“自行扩展”?

于 2019-07-19T20:01:34.157 回答