11

我知道nbconvert并使用它来生成带有结果输出的静态 html 或 ipynb 文件。但是,我希望能够生成一个与我已经运行的内核保持连接的笔记本,以便在运行所有模板单元后进行进一步的数据探索。有没有办法做到这一点?

4

3 回答 3

2

显然,您可以通过 Python API 做到这一点。我自己没有尝试过,但是对于正在寻找解决方案的人来说,这个PR 在评论中有一个例子:

from nbconvert.preprocessors.execute import executenb, ExecutePreprocessor
from nbformat import read as nbread
from jupyter_client.manager import start_new_kernel

nb = nbread('parsee.ipynb', as_version=4)
kernel_name = nb.metadata.get('kernelspec', {}).get('name', 'python')
km, kc = start_new_kernel(kernel_name=kernel_name)
executenb(nb, kernel=(km, kc))
kc.execute_interactive('a')  # a is a variable defined in parsee.ipynb with 'a = 1'
于 2020-03-04T11:53:34.693 回答
1

不太确定你的目的。但我的一般解决方案是,

  1. 在命令行中执行笔记本并同时查看执行情况,

    jupyter nbconvert --debug --allow-errors --stdout --execute test.ipynb

这将显示调试模式下所有单元的执行,即使发生异常。但直到执行结束我才能看到结果。

  1. 将结果输出到 html 文件,然后打开 html 文件查看结果。我发现这更方便。

    jupyter nbconvert --execute --allow-errors --stdout test.ipynb >> result.html 2>&1

如果你打开 result.html,它会是, 在此处输入图像描述

所有错误和结果都将显示在页面上。

我想向大家学习其他答案/解决方案。谢谢你。

于 2016-11-08T20:29:09.547 回答
1

如果我理解正确,您希望打开 Python 控制台,并将 Jupyter 笔记本连接到该内核实例?

也许您的解决方案是编辑 jupyter 脚本本身并在单独的线程/后台任务中运行服务器,实现线程之间的某种连接并在 jupyter 控制台中工作?目前这是不可能的,因为主线程正在运行服务器。

这需要一些工作,我没有任何解决方案,但我会调查一下,如果可以的话,我可能会编辑这个答案。

但似乎最简单的解决方案是简单地在笔记本中添加另一个字段并在那里做任何你想做的事情。有理由不这样做吗?

于 2016-11-15T13:39:32.730 回答