如何从终端运行.ipynb Jupyter笔记本?

Vin*_*ent 130 python ipython jupyter-notebook nbconvert

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

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

min*_*nrk 138

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

jupyter nbconvert --execute <notebook>
Run Code Online (Sandbox Code Playgroud)

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

jupyter nbconvert --execute --to notebook <notebook>
Run Code Online (Sandbox Code Playgroud)

或者,如果要使用新输出替换现有笔记本:

jupyter nbconvert --execute --to notebook --inplace <notebook>
Run Code Online (Sandbox Code Playgroud)

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

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>
Run Code Online (Sandbox Code Playgroud)

  • 这会将笔记本变成静态HTML页面 (6认同)
  • 可以在 https://nbconvert.readthedocs.io/en/latest/execute_api.html#module-nbconvert.preprocessors 找到文档或运行笔记本的这种和编程方式 (3认同)
  • 另外,如果您有长时间运行的单元格,[您可以设置](https://nbconvert.readthedocs.io/en/latest/execute_api.html)`--ExecutePreprocessor.timeout=[timeout_in_seconds]`(使用`-1`没有任何限制)。 (2认同)

dit*_*kin 84

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

jupyter nbconvert --to python nb.ipynb
Run Code Online (Sandbox Code Playgroud)

您可能必须安装python mistune包:

sudo pip install -U mistune
Run Code Online (Sandbox Code Playgroud)

  • 不赞成使用子命令`ipython nbconvert`来支持jupyter nbconvert (11认同)
  • 我认为这个答案不正确。我意识到它可以工作,但问题是如何从终端运行.ipynb,而不是如何将其转换为.py然后运行。 (3认同)
  • 如果任何单元的运行时间超过30秒,Nbconvert将失败,您可能需要添加--ExecutePreprocessor.timeout = 600。 (3认同)

小智 38

在您的终端中运行 ipython:

ipython
Run Code Online (Sandbox Code Playgroud)

然后找到您的脚本并将其放在那里:

%run your_script.ipynb
Run Code Online (Sandbox Code Playgroud)

  • @baxx `ipython -c "%run your_script.ipynb"` (9认同)

pdm*_*pdm 33

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

代码导出示例

希望能帮助到你.

  • 没有回答原来的问题 (13认同)

Mur*_*mel 28

使用ipython

ipython --TerminalIPythonApp.file_to_run=<notebook>.ipynb
Run Code Online (Sandbox Code Playgroud)

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

ipython -c "%run <notebook>.ipynb"
Run Code Online (Sandbox Code Playgroud)

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

  • 伙计们,承认吧,如果没有这个答案,你就找不到评论,所以为什么不同时投票呢?:) (4认同)

Vij*_*hal 10

对于新版本而不是:

ipython nbconvert --to python <YourNotebook>.ipynb
Run Code Online (Sandbox Code Playgroud)

你可以使用ipython的jupyter instend:

jupyter nbconvert --to python <YourNotebook>.ipynb
Run Code Online (Sandbox Code Playgroud)


ale*_*dro 7

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

jupyter nbconvert --execute --clear-output <notebook>.ipynb
Run Code Online (Sandbox Code Playgroud)

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

如果你运行:

jupyter nbconvert --help
Run Code Online (Sandbox Code Playgroud)

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


pgl*_*z82 7

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

pip install papermill
papermill notebook.ipynb output.ipynb
Run Code Online (Sandbox Code Playgroud)

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


Geo*_*ing 6

现在有一个jupyter execute子命令将执行笔记本。

jupyter execute notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

有关此命令的更多信息可以在Jupyter 文档中找到。


Axi*_*xis 5

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

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

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

pip install runipy
Run Code Online (Sandbox Code Playgroud)

在编译你的代码之后:

runipy <YourNotebookName>.ipynb
Run Code Online (Sandbox Code Playgroud)

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

  • 作者的注释“这个项目在 Jupyter 的执行 API 之前开始,现在是从命令行运行笔记本的推荐方式。考虑 runipy 已弃用和未维护。” (12认同)

ppl*_*ski 5

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

1. 使用nbconvert

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

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

笔记本执行示例:

jupyter nbconvert --execute --to notebook --allow-errors your-notebook.ipynb 
Run Code Online (Sandbox Code Playgroud)

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

2. 使用papermill

Papermill允许您对笔记本进行参数化。您可以将变量定义为参数(带有单元格标签)。

命令示例:

papermill -p name Piotrek your-notebook.ipynb output-notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

带有注入参数的示例笔记本: 由 papermill 注入参数的笔记本

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

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

将笔记本下载为 Python 脚本

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

4. 使用jupytext

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