如何从终端运行.ipynb Jupyter Notebook?


159

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

基本上,如果这只是一个.py文件,我相信我可以从命令行执行python filename.py。.ipynb文件是否存在类似内容?


像这样的东西:github.com/paulgb/runipy
idjaw

这样的事情。我的inputipython笔记本中有一些语句,这些语句似乎有问题
Vincent

Answers:


107

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

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

您可能需要安装python mistune软件包:

sudo pip install -U mistune

14
ipython nbconvert不推荐使用子命令,而推荐使用jupyter nbconvert
PenguinEngineer

6
我认为这个答案不正确。我意识到它可以工作,但是问题是如何从终端运行.ipynb,而不是如何将其转换为.py然后运行。
Giacomo

3
如果任何单元的运行时间超过30秒,Nbconvert将失败,您可能需要添加--ExecutePreprocessor.timeout=600
bckygldstn

最新的更新使其像这样工作,您从笔记本文件中获取了HTMLjupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
b-ak

160

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>

1
这似乎在conda虚拟环境中不起作用
Ramesh-X,

9
这会将笔记本变成静态HTML页面
JimDaniëlTeunis 18/09/29


有没有一种方法可以指定要执行的单元?例如电池10和所有下面,或一个范围电池10到小区20
铝康拉德

2
另外,如果电池运行时间较长,则可以进行设置 --ExecutePreprocessor.timeout=[timeout_in_seconds]-1无限制使用)。
Zaccharie Ramzi

38

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

代码导出样本

希望能帮助到你。


这个答案(y)
ColinMac

3
没有回答原始问题
baxx


10

对于新版本,而不是:

ipython nbconvert --to python <YourNotebook>.ipynb

您可以使用ipython的jupyter实例:

jupyter nbconvert --to python <YourNotebook>.ipynb

这如何回答问题?
baxx

4

更新作者引用的评论,以提高可见度:

作者注释:“该项目在Jupyter的执行API之前启动,现在是从命令行运行笔记本的推荐方式。请考虑弃用不维护runipy的软件。” –塞巴斯蒂安·帕尔马(Sebastian Palma)

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

pip install runipy

只是编译您的代码后:

runipy <YourNotebookName>.ipynb

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


11
作者注释:“该项目在Jupyter的execute API之前启动,现在是从命令行运行笔记本的推荐方式。请考虑不建议使用runipy并对其进行维护。”
塞巴斯蒂安·帕尔玛

3

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

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

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

如果您运行:

jupyter nbconvert --help

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



0

从终端运行

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

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

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


0

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

pip install papermill
papermill notebook.ipynb output.ipynb

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.