非交互式运行IPython / JUpyter笔记本

有谁知道是否可以从命令行以非交互方式运行IPython / Jupyter笔记本,并将生成的.ipynb文件与运行结果.ipynb保存。 如果还不可能,那么使用phantomJS来实现有多难?有些东西可以打开和closures内核,还有一些可以打开或closuresWeb服务器?

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

示例命令:

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

是的,这是可能的,而且很容易,它将(大部分)在2.0的IPython核心,我build议现在看看这些例子 。

[编辑]

现在在Jupyter NbConvert。 NbConvert附带有一组默认禁用的Preprocessor ,其中两个( 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

如果你设置了--profile=<your fav profile> ,这个(当然)可以通过派生一个<insert-your-language-here>内核来处理非python内核。 由于需要重新运行笔记本,所以转换可能会很长。 您可以使用--to=notebook选项来执行笔记本到笔记本的转换。

有各种其他选项(超时,允许错误,…),可能需要根据使用情况设置/取消设置。 查看文档,当然还有jupyter nbconert --help--help-all for mor信息。

在这个function成为核心的一部分之前,我把一个小小的命令行应用程序放在一起,只是做你想要的。 这叫做runipy,你可以用pip install runipy来安装它。 源和自述在github上 。

要涵盖一些function,例如并行工作者或input参数,您可以安装jupyter-runner

 pip install jupyter-runner 

github上的自述文件: https : //github.com/omar-masmoudi/jupyter-runner

您可以通过命令行运行iPython-Notebook-server:

 ipython notebook --pylab inline 

这将以非交互模式启动服务器,并在代码下面打印所有输出。 然后你可以保存包含代码和输出的.ipynb文件。