Jupyter notebook 使用造纸机在笔记本中执行get_ipython代码时出现问题

Jupyter notebook 使用造纸机在笔记本中执行get_ipython代码时出现问题,jupyter-notebook,ipython,papermill,Jupyter Notebook,Ipython,Papermill,我有一个笔记本,可以将探索性分析笔记本的结果重新格式化,以便导出到幻灯片。此笔记本根据传入的零件类型和参数数量创建新单元。我使用以下代码生成了一个新的单元格,当我在笔记本中进行测试时,它可以正常工作: def create_code_cell(cell_content, replace=False,): shell = get_ipython() payload = { "source":"set_next_input", "text":cell_

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

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执行时,该函数没有创建单元格

如果我打开从造纸厂创建的新笔记本,并单击Cells=>Run,则生成所有单元格


谢谢你的帮助

Papermill在引擎盖下使用nbConvert,它运行IPython外壳,而没有启动任何web浏览器消息传递协议。如果在shell中运行IPython并运行给定的命令,则不会生成任何输出。通过在浏览器中运行笔记本设置的消息传递协议是监听这些有效负载更新并从中创建新单元的协议

我见过的唯一其他在笔记本中以编程方式创建单元格的解决方案依赖于JavaScript来运行,如果您也没有在浏览器(又名nbConvert)中运行,则不会执行JavaScript


也许这正是您已经拥有的,但您能否将生成的笔记本设置为这样一种方式,即当用户第一次在浏览器中运行它时,笔记本会自行展开?

您所描述的就是我在进行分析时所做的工作,我所做的分析的迭代次数并不理想,但最终还是比我花在解决问题上的时间要快。我感谢你的详细解释,很抱歉我没有尽快回复。