以非交互方式运行IPython/Jupyter笔记本

dav*_*inn 73 ipython jupyter-notebook

有没有人知道是否可以从命令行以非交互方式运行IPython/Jupyter笔记本,并将结果.ipynb文件与运行结果一起保存.如果还不可能,使用phantomJS实现有多难,可以打开和关闭内核,以及打开和关闭Web服务器的东西?

更具体地说,假设我已经有一个笔记本original.ipynb,我想重新运行该笔记本中的所有单元格并将结果保存在新笔记本中new.ipynb,但是在命令行上使用一个命令执行此操作,而无需在浏览器中进行交互或关闭内核或Web服务器,并假设没有内核或Web服务器已在运行.

示例命令:

$ ipython notebook run original.ipynb --output=new.ipynb

Mat*_*att 63

是的,它是可能的,而且很容易,它(大部分)将在2.0的IPython核心中,我建议现在查看这些示例.

[编辑]

$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb
Run Code Online (Sandbox Code Playgroud)

它现在在Jupyter NbConvert.NbConvert带有一堆Preprocessor默认禁用的s,其中两个(ClearOutputPreprocessorExecutePreprocessor)是有意义的.你可以通过c.<PreprocessorName>.enabled=True(大写的python)在你的(本地)配置文件中启用它们,或者在命令行中启用它们,--ExecutePreprocessor.enabled=True像往常一样保留命令的其余部分.

--ExecutePreprocessor.enabled=True具有方便--execute,可以在最新版本NbConvert的所使用的别名.--inplace如果需要,它可以结合使用

例如,在运行笔记本无头后转换为html:

$ jupyter nbconvert --to=html --execute RunMe.ipynb

剥离输出后转换为PDF

$ ipython nbconvert --to=pdf --ClearOutputPreprocessor.enabled=True RunMe.ipynb

<insert-your-language-here>如果你设置的话,这(当然)通过生成内核与非python内核一起工作--profile=<your fav profile>.转换可能非常长,因为它需要重新运行笔记本电脑.您可以使用该--to=notebook选项进行笔记本到笔记本的转换.

根据用例,可能需要设置/取消设置各种其他选项(超时,允许错误......).请参阅文件,当然jupyter nbconvert --help,--help-allnbconvert在线文档获取更多信息.

  • 好像现在这样(Ipython 3.1.0):`ipython nbconvert --to = html --execute RunMe.ipynb` (7认同)
  • @NoahR尝试`--ExecutePreprocessor.timeout = -1` [ref](http://nbconvert.readthedocs.io/en/latest/execute_api.html#execution-arguments-traitlets) (5认同)
  • 最新的jupyter(4.1.0)确实允许非交互式运行笔记本`jupyter nbconvert --to notebook --execute --allow-errors notebook.ipynb`也许答案可以编辑 (5认同)
  • 不是在IPython 2中,在IPython 3的路上 (3认同)

pau*_*aul 20

在此功能成为核心的一部分之前,我整理了一个可以满足您需求的命令行应用程序.它被称为runipy,您可以安装它pip install runipy.该源和自述是在GitHub上.