如何从终端运行 .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 脚本中 @baxxipython -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文件时遇到错误(示例