有没有人知道是否可以从命令行以非交互方式运行IPython / Jupyter笔记本,并将生成的 .ipynb
文件与运行结果一起保存 . 如果还不可能,使用phantomJS实现有多难,可以打开和关闭内核,以及打开和关闭Web服务器的东西?
更具体地说,我们假设我已经有一个笔记本 original.ipynb
并且我想重新运行该笔记本中的所有单元格并将结果保存在新的笔记本中 new.ipynb
,但是在命令行上使用一个命令执行此操作,而无需在浏览器或关闭内核或Web服务器,并假设没有内核或Web服务器已在运行 .
示例命令:
$ ipython notebook run original.ipynb --output=new.ipynb
4 回答
是的,它是可能的,而且很容易,它(大部分)将在2.0版的IPython核心中,我建议现在查看those examples .
[编辑]
它现在在Jupyter NbConvert . NbConvert带有一堆默认禁用的
Preprocessor
,其中两个(ClearOutputPreprocessor
和ExecutePreprocessor
)很有意思 . 您可以通过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 nbconvert --help
,--help-all
或nbconvert online documentation .在此功能成为核心的一部分之前,我整理了一个可以满足您需求的命令行应用程序 . 它被称为runipy,您可以使用
pip install runipy
进行安装 . source and readme are on github .要覆盖并行工作程序或输入参数等某些功能,可以安装jupyter-runner
github上的自述文件:https://github.com/omar-masmoudi/jupyter-runner
您可以通过命令行运行iPython-Notebook-server:
这将以非交互模式启动服务器,所有输出都打印在代码下方 . 然后,您可以保存包含代码和输出的.ipynb文件 .