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

时间:2013-07-28 05:38:04

标签: ipython jupyter-notebook

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

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

示例命令:

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

6 个答案:

答案 0 :(得分:61)

是的,它是可能的,而且很容易,它(大部分)将在2.0版的IPython核心中,我建议暂时查看those examples

[编辑]

$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb

现在是Jupyter NbConvert。 NbConvert带有一堆默认禁用的Preprocessor,其中两个(ClearOutputPreprocessorExecutePreprocessor)是有意义的。您可以通过c.<PreprocessorName>.enabled=True(大写字母为python)在您的(本地|全局)配置文件中启用它们,或者在--ExecutePreprocessor.enabled=True的命令行中启用它们,照常保留命令的其余部分。 / p>

--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>,这(当然)通过生成--profile=<your fav profile>内核与非python内核一起使用。转换可能非常长,因为它需要重新运行笔记本电脑。您可以使用--to=notebook选项进行笔记本到笔记本的转换。

根据用例,可能需要设置/取消设置其他各种选项(超时,允许错误等)。有关详细信息,请参阅文档,当然还有jupyter nbconvert --help--help-allnbconvert online documentation

答案 1 :(得分:20)

在此功能成为核心的一部分之前,我整理了一个可以满足您需求的命令行应用程序。它被称为runipy,您可以使用pip install runipy进行安装。 source and readme are on github

答案 2 :(得分:1)

要涵盖某些功能,例如并行工作者或输入参数,您可以安装jupyter-runner

pip install jupyter-runner

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

答案 3 :(得分:1)

运行并替换原始的.ipunb文件:

SCREAMING_SNAKE_CASE

答案 4 :(得分:0)

另一种方法是使用papermill,它有Command Line Interface

使用示例:(需要指定存储执行结果的输出路径)

papermill your_notebook.ipynb logs/yourlog.out.ipynb

如果您希望为每个参数使用 -p 标志,您也可以指定所需的参数:

papermill your_notebook.ipynb logs/yourlog.out.ipynb -p env "prod" -p tests "e2e"

另外一个与造纸厂相关的回复 - https://stackoverflow.com/a/55458141/2957102

答案 5 :(得分:-5)

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

ipython notebook --pylab inline

这将以非交互模式启动服务器,并且所有输出都打印在代码下方。然后,您可以保存.ipynb文件,其中包括Code&amp;输出