83

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

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

示例命令:

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

4

6 回答 6

72

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

[编辑]

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

它现在在 Jupyter NbConvert 中。NbConvert 带有一堆Preprocessor默认禁用的 s,其中两个 (ClearOutputPreprocessorExecutePreprocessor) 是有趣的。您可以通过(大写即python)在您的(本地|全局)配置文件中启用它们,也可以c.<PreprocessorName>.enabled=True在命令行上将--ExecutePreprocessor.enabled=True其余命令保持不变。

--ExecutePreprocessor.enabled=True具有方便的--execute别名,可用于最新版本的 NbConvert。--inplace如果需要,它可以与

例如,在 headless 运行 notebook 后转换为 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>. 转换可以非常长,只要它需要重新运行笔记本。您可以使用该--to=notebook选项进行笔记本到笔记本的转换。

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

于 2013-07-28T23:04:51.270 回答
21

在此功能成为核心的一部分之前,我会组装一个小命令行应用程序,它可以满足您的需求。它称为 runipy,您可以使用pip install runipy. 源代码和自述文件在github 上

于 2013-09-20T03:38:15.970 回答
2

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

jupyter nbconvert --ExecutePreprocessor.timeout=-1 --to notebook --inplace --execute original.ipynb
于 2019-10-12T19:14:23.670 回答
1

要涵盖一些功能,例如并行工作器、输入参数、电子邮件发送或 S3 输入/输出......你可以安装 jupyter-runner

pip install jupyter-runner

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

于 2017-03-09T23:03:51.277 回答
0

另一种方法是使用papermill,它有命令行界面

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

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

于 2021-06-07T11:34:42.077 回答
-5

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

ipython notebook --pylab inline

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

于 2013-07-28T09:25:47.123 回答