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

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

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

373229 次浏览

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

code export sample

希望能有所帮助。

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

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

你可能需要安装python 使走调包:

sudo pip install -U mistune

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>

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

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

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

pip install runipy

编译代码后:

runipy <YourNotebookName>.ipynb

你也可以试试cronjob。所有信息都是在这里

对于新版本,而不是:

ipython nbconvert --to python <YourNotebook>.ipynb

你可以用jupyter代替ipython:

jupyter nbconvert --to python <YourNotebook>.ipynb

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

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

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

如果你运行:

jupyter nbconvert --help
< p >——clear-output 清除当前文件的输出并保存在适当的位置,覆盖现有的笔记本

在你的终端运行ipython:

ipython

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

%run your_script.ipynb

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

from boar.running import run_notebook


outputs = run_notebook("nb.ipynb")

如果你更新了你的笔记本,你不需要再次将它转换为python文件。


更多信息请浏览:

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

从终端运行

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

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

如果你想保存输出的笔记本到一个新的笔记本,你可以使用标志--output my_new_nb.ipynb

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

pip install papermill
papermill notebook.ipynb output.ipynb

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

使用ipython:

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

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

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

它基本上是已经建议的评论(不幸的是有点隐藏)。

你也可以使用jupytext https://jupytext.readthedocs.io/en/latest/index.html

这允许你配对你的笔记本。所以对于每个ipynb文件,你都有一个带有一些注释的.py文件。.py文件可以照常执行。 你可以享受两个世界的好处,但代价是额外的一个文件

哦,顺便说一下,如果你正在使用版本控制,你只能提交带有漂亮diff的.py文件,而不是丑陋的.ipynb diff。

(.py文件中的语法类似于Databricks笔记本,如果你熟悉它们…)

在批处理文件中粘贴以下内容。使用ipython运行。ipynb文件。

@echo on
call "C:\ProgramData\Anaconda3\Scripts\activate.bat"
ipython "path\test.ipynb"
pause

我对这个主题做了一些研究,并在下面写了一篇关于在命令行中运行Jupyter Notebook的4种方法的文章,是我的发现的总结。

1. 使用nbconvert

nbconvert包已经安装在Jupyter Notebook中。它可以用来执行笔记本电脑。此外,它有许多特点:

  • 可以将笔记本导出为PDF或HTML,
  • 可以隐藏代码在输出笔记本,
  • 即使在单元格中有错误,也可以执行笔记本。

笔记本执行示例:

jupyter nbconvert --execute --to notebook --allow-errors your-notebook.ipynb

上面的命令将输出your-notebook.nbconvert.ipynb文件,即使出现错误,也将执行所有单元格。

2. 使用papermill

造纸厂允许你参数化笔记本。您可以将变量定义为参数(使用单元格标记)。

示例命令:

papermill -p name Piotrek your-notebook.ipynb output-notebook.ipynb

示例笔记本注入参数: 由造纸厂注入参数的笔记本 < / p >

3.手动下载笔记本作为.py脚本

有一个选项可以手动下载notebook作为.py脚本:

download notebook as Python script

下载后,您可以向文件添加执行权限,并将其作为命令行脚本运行。

4. 使用jupytext

jupytext包允许你同步.ipynb文件和.py文件。您不需要手动将笔记本转换为脚本。