【问题标题】:Can I run Jupyter notebook cells in commandline?我可以在命令行中运行 Jupyter 笔记本单元格吗?
【发布时间】:2016-05-30 01:17:47
【问题描述】:

我正在部署一个 Python 包,我想运行一个简单的测试,看看我笔记本中的所有单元格是否都能正常运行。我想通过命令行对此进行测试,因为我在virtualenv 中运行笔记本时遇到问题。有没有简单的命令行方法来测试这个?


版主注意:此问题已被标记为与How to run an .ipynb Jupyter Notebook from terminal? 重复。但是,这个问题是在那个问题之前几天发布的(2016 年 2 月 18 日 2:49 提问)(16 年 2 月 22 日 3:35 提问)。最多,该帖子可能会被标记为重复,如果认为是这样,适当的操作将是merge the two questions, maintaining this, the original, as the master

但是,这些问题可能不会重复(其他作者的意图不清楚)。无论如何,这个问题及其答案专门针对从终端执行 jupyter notebook 中的单元,而不是简单地将 notebook 转换为 python 文件。

【问题讨论】:

标签: python command-line ipython jupyter


【解决方案1】:

nbconvert(一个用于笔记本转换的 jupyter 工具)让您无需任何额外的包即可做到这一点:

只需转到您的终端并输入

$ jupyter nbconvert --to notebook --inplace --execute mynotebook.ipynb

Source

(感谢 Stephan 建议 --inplace 标志)

注意:也就是说,我会尝试将您需要的所有内容转换为适当的脚本。 Jupyter 笔记本被认为是用于探索和分享结果,而不是替代传统程序。

【讨论】:

  • 我更喜欢使用 nbconvert 的想法而不是单独的包,尽管当我尝试这个时遇到了this issue
  • 您也可以使用 --inplace 标志:jupyter nbconvert --to notebook --execute --inplace mynotebook.ipynb
  • 如果任何单元的运行时间超过 30 秒,Nbconvert 将失败,您可能需要添加 --ExecutePreprocessor.timeout=600
  • 可以在nbconvert.readthedocs.io/en/latest/…找到运行笔记本的文档或这种和编程方式。
  • @bckygldstn 有什么办法可以一起取消超时?还是我只需要设置一个非常高的值?
【解决方案2】:

您可以使用runipy 来执行此操作。

runipy 将运行笔记本中的所有单元格。如果发生错误,进程将停止。

$ pip install runipy

$ runipy MyNotebook.ipynb

还有一些命令可以将输出文件保存为笔记本或 html 报告:

$ runipy MyNotebook.ipynb OutputNotebook.ipynb

$ runipy MyNotebook.ipynb --html report.html

【讨论】:

  • 这个答案是正确的,但在最新版本的 jupyter 中被nbconvert 命令取代
  • papermill,如下所示。
【解决方案3】:

您也可以尝试papermill,它允许您从命令行执行笔记本,并传递参数:

例如:

$ papermill mynotebook.ipynb mynotebook_output.ipynb -p start "2017-11-01" -p end "2017-11-30"

你也可以不传递任何参数运行它。

【讨论】:

  • papermill 有一个不错的控制台用户界面,带有执行状态和时间,所以如果你想要一些执行监控,我实际上建议使用它而不是 nbconvert
  • 通常意义上的不执行。笔记本中的打印语句在执行期间不会进入标准输出,就像转换为 .py & running 一样。相反,您得到的是一个全新的笔记本文件。 ??
猜你喜欢
  • 2018-04-13
  • 2018-10-19
  • 2021-06-17
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多