执行jupyter notebook并保持附加到现有内核

时间:2016-11-02 01:34:43

标签: ipython jupyter jupyter-notebook nbconvert

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

3 个答案:

答案 0 :(得分:1)

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

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

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

  2. 这将显示在调试模式下执行所有单元,甚至发生异常。但是直到执行结束我才能看到结果。

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

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

    2. 如果你打开result.html,它会是, enter image description here

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

      我想从大家那里学习其他答案/解决方案。谢谢。

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

显然,您可以通过Python API进行此操作。我自己没有尝试过,但是对于想要寻找解决方案的人,this 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'