是否有人知道是否可以从命令行以非交互方式运行IPython / Jupyter笔记本,并将生成的.ipynb
文件与运行结果一起保存。如果还不可能,用phantomJS实现有多难,有什么能打开和关闭内核,以及打开和关闭Web服务器的东西?
更具体地说,我们假设我已经有了一个笔记本original.ipynb
,我想重新运行该笔记本中的所有单元格,并将结果保存在一个新的笔记本new.ipynb
中,但只需一个命令行上的命令,无需在浏览器中进行交互或关闭内核或Web服务器,并假设没有内核或Web服务器已在运行。
示例命令:
$ ipython notebook run original.ipynb --output=new.ipynb
答案 0 :(得分:61)
是的,它是可能的,而且很容易,它(大部分)将在2.0版的IPython核心中,我建议暂时查看those examples。
[编辑]
$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb
现在是Jupyter NbConvert。 NbConvert带有一堆默认禁用的Preprocessor
,其中两个(ClearOutputPreprocessor
和ExecutePreprocessor
)是有意义的。您可以通过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-all
或nbconvert 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;输出