我可以在命令行中 运行 Jupyter 笔记本单元吗?

Can I run Jupyter notebook cells in commandline?

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


主持人注意:此问题已被标记为 How to 运行 an .ipynb Jupyter Notebook from terminal? 的副本? 。但是,这个问题是 posted(2016 年 2 月 18 日在 2:49 提出的)几天前(2016 年 2 月 22 日在 3:35 提出)。至多,post 可能会被标记为重复项,如果被认为是重复项,适当的操作将是 merge the two questions, maintaining this, the original, as the master

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

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

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

$ pip install runipy

$ runipy MyNotebook.ipynb

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

$ runipy MyNotebook.ipynb OutputNotebook.ipynb

$ runipy MyNotebook.ipynb --html report.html

nbconvert(用于笔记本转换的 jupyter 工具)允许您在没有任何额外包的情况下执行此操作:

只需转到您的终端并输入

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

Source

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

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

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

例如:

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

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