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

Posted

技术标签:

【中文标题】如何从终端运行 .ipynb Jupyter Notebook?【英文标题】:How to run an .ipynb Jupyter Notebook from terminal? 【发布时间】:2016-06-03 09:25:58 【问题描述】:

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

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

【问题讨论】:

类似这样的:github.com/paulgb/runipy ? 【参考方案1】:

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>

【讨论】:

这会将笔记本变成静态 html 页面 可以在nbconvert.readthedocs.io/en/latest/…找到运行笔记本的文档或这种和编程方式。 有没有办法指定执行哪些单元格?例如单元格 10 及以下所有单元格,或单元格 10 到单元格 20 的范围。 另外,如果你有长时间运行的单元格,you can set--ExecutePreprocessor.timeout=[timeout_in_seconds](使用-1没有限制)。 最新的更新让它像这样工作,你从笔记本文件jupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb得到一个HTML【参考方案2】:

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

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

您可能需要安装 python mistune 包:

sudo pip install -U mistune

【讨论】:

子命令 ipython nbconvert 已弃用,取而代之的是 jupyter nbconvert 我认为这个答案不正确。我意识到它可以工作,但问题是如何从终端运行 .ipynb,而不是如何将其转换为 .py 然后运行它。 如果任何单元的运行时间超过 30 秒,Nbconvert 将失败,您可能需要添加 --ExecutePreprocessor.timeout=600 最新的更新使它像这样工作,你从笔记本文件jupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb得到一个HTML【参考方案3】:

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

希望对你有帮助。

【讨论】:

没有回答原来的问题【参考方案4】:

在你的终端运行 ipython:

ipython

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

%run your_script.ipynb

【讨论】:

如何将其放入 shell 脚本中 @baxx ipython -c "%run your_script.ipynb" 你能用这个做一个 Makefile 吗?【参考方案5】:

对于新版本,而不是:

ipython nbconvert --to python <YourNotebook>.ipynb

你可以使用 ipython 的 jupyter instend:

jupyter nbconvert --to python <YourNotebook>.ipynb

【讨论】:

这个问题的答案如何?【参考方案6】:

使用 ipython

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

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

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

这基本上是Keto 已经建议的(不幸的是有点隐藏)comment。

【讨论】:

伙计们,承认吧,如果没有这个答案,您将找不到评论,那么为什么不同时投票呢?:) 我还想补充一点,指定笔记本的绝对路径是谨慎的(如果ipython不是“运行链”的唯一部分,它可以为您节省大量搜索"(在我的情况下,ipython 位于从 Kubernetes CronJob 运行的 bash 脚本中,如果没有笔记本的完整绝对路径,它将失败)。【参考方案7】:

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

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

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

如果你运行:

jupyter nbconvert --help

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

【讨论】:

【参考方案8】:

更新作者引用的评论以提高知名度:

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

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

pip install runipy

在编译你的代码之后:

runipy <YourNotebookName>.ipynb

您也可以尝试 cronjob。所有信息都是here

【讨论】:

作者注“这个项目在 Jupyter 的执行 API 之前就开始了,现在推荐使用命令行运行 notebook 的方式。考虑到 runipy 已弃用且未维护。”【参考方案9】:

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

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

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


更多信息请访问:

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

【讨论】:

【参考方案10】:

从终端运行

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

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

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

【讨论】:

【参考方案11】:

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

pip install papermill
papermill notebook.ipynb output.ipynb

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

【讨论】:

以上是关于如何从终端运行 .ipynb Jupyter Notebook?的主要内容,如果未能解决你的问题,请参考以下文章

ModuleNotFoundError: No module named 'jupyter_contrib_nbextensions' .ipynb文件转换.py文件时遇到错误(示例

ModuleNotFoundError: No module named 'jupyter_contrib_nbextensions' .ipynb文件转换.py文件时遇到错误(示例

终端运行jupyter notebook

jupyter里误删了ipynb文件,还可以恢复吗?

如何将jupyter中的.ipynb文件转换成python中的.py文件

从另一个笔记本运行 Jupyter 笔记本