214

我在一个 .ipynb 文件中有一些代码,并把它弄到了我真的不需要 IPython Notebook 的“交互式”功能的地步。我想直接从 Mac 终端命令行运行它。

基本上,如果这只是一个 .py 文件,我相信我可以从命令行执行 python filename.py 。.ipynb 文件有类似的东西吗?

4

11 回答 11

203

nbconvert 允许您使用以下--execute标志运行笔记本:

jupyter nbconvert --execute <notebook>

如果要运行笔记本并生成新笔记本,可以添加--to notebook

jupyter nbconvert --execute --to notebook <notebook>

或者,如果您想用新的输出替换现有的笔记本:

jupyter nbconvert --execute --to notebook --inplace <notebook>

由于这是一个非常长的命令,您可以使用别名:

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>
于 2016-02-23T08:50:09.193 回答
140

在命令行中,您可以使用以下命令将笔记本转换为 python:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

您可能需要安装 python misune包:

sudo pip install -U mistune
于 2016-02-22T03:48:25.603 回答
41

在您的终端运行 ipython:

ipython

然后找到你的脚本并放在那里:

%run your_script.ipynb
于 2019-11-08T21:39:11.693 回答
40

您可以从中导出所有代码.ipynb并将其保存为.py脚本。然后您可以在终端中运行该脚本。

代码导出示例

希望能帮助到你。

于 2016-02-22T03:43:31.090 回答
12

使用ipython

ipython --TerminalIPythonApp.file_to_run=<notebook>.ipynb

通常,我更喜欢这个选项,因为它真的是自我描述的。如果您喜欢使用较少的字符,请使用:

ipython -c "%run <notebook>.ipynb"

这基本上是Keto已经建议的(不幸的是有点隐藏)作为评论

于 2021-03-09T09:54:19.483 回答
10

对于新版本,而不是:

ipython nbconvert --to python <YourNotebook>.ipynb

您可以使用 ipython 的 jupyter instend:

jupyter nbconvert --to python <YourNotebook>.ipynb
于 2018-04-05T06:19:11.520 回答
7

就我而言,最适合我的命令是:

jupyter nbconvert --execute --clear-output <notebook>.ipynb

为什么?此命令不会创建额外的文件(就像.py文件一样),并且每次执行 notebook 时都会覆盖单元格的输出。

如果你运行:

jupyter nbconvert --help

--clear-output 清除当前文件的输出并保存在原地,覆盖现有的笔记本。

于 2019-10-18T00:12:25.597 回答
5

更新作者引用的评论以获得更好的可见性:

作者的注释“这个项目在 Jupyter 的执行 API 之前开始,现在推荐的方式是从命令行运行笔记本。考虑不推荐使用和未维护的 runipy。” ——塞巴斯蒂安·帕尔马

安装允许在终端上运行代码的 runipy 库

pip install runipy

只需编译您的代码后:

runipy <YourNotebookName>.ipynb

您也可以尝试 cronjob。所有信息都在这里

于 2018-02-10T12:05:17.183 回答
2

您还可以使用该boar包在 python 代码中运行您的笔记本。

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

如果您更新笔记本,则不必再次将其转换为 python 文件。


更多信息请访问:

https://github.com/alexandreCameron/boar/blob/master/USAGE.md

于 2020-05-24T15:39:26.503 回答
1

从终端运行

jupyter nbconvert --execute --to notebook --inplace --allow-errors --ExecutePreprocessor.timeout=-1 my_nb.ipynb

默认超时为 30 秒。-1 删除限制。

如果您希望将输出笔记本保存到新笔记本,您可以使用标志--output my_new_nb.ipynb

于 2020-07-07T06:28:21.567 回答
1

我有同样的问题,我找到了papermill。与其他解决方案相比,优势在于您可以在笔记本运行时查看结果。当笔记本需要很长时间时,我发现此功能很有趣。这是非常容易使用:

pip install papermill
papermill notebook.ipynb output.ipynb

它还有其他方便的选项,例如将输出文件保存到 Amazon S3、Google Cloud 等。有关更多信息,请参阅页面。

于 2020-07-16T11:30:52.137 回答