我在一个 .ipynb 文件中有一些代码,并把它弄到了我真的不需要 IPython Notebook 的“交互式”功能的地步。我想直接从 Mac 终端命令行运行它。
基本上,如果这只是一个 .py 文件,我相信我可以从命令行执行 python filename.py 。.ipynb 文件有类似的东西吗?
我在一个 .ipynb 文件中有一些代码,并把它弄到了我真的不需要 IPython Notebook 的“交互式”功能的地步。我想直接从 Mac 终端命令行运行它。
基本上,如果这只是一个 .py 文件,我相信我可以从命令行执行 python filename.py 。.ipynb 文件有类似的东西吗?
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>
在命令行中,您可以使用以下命令将笔记本转换为 python:
jupyter nbconvert --to python nb.ipynb
https://github.com/jupyter/nbconvert
您可能需要安装 python misune包:
sudo pip install -U mistune
在您的终端运行 ipython:
ipython
然后找到你的脚本并放在那里:
%run your_script.ipynb
对于新版本,而不是:
ipython nbconvert --to python <YourNotebook>.ipynb
您可以使用 ipython 的 jupyter instend:
jupyter nbconvert --to python <YourNotebook>.ipynb
就我而言,最适合我的命令是:
jupyter nbconvert --execute --clear-output <notebook>.ipynb
为什么?此命令不会创建额外的文件(就像.py
文件一样),并且每次执行 notebook 时都会覆盖单元格的输出。
如果你运行:
jupyter nbconvert --help
--clear-output 清除当前文件的输出并保存在原地,覆盖现有的笔记本。
更新作者引用的评论以获得更好的可见性:
作者的注释“这个项目在 Jupyter 的执行 API 之前开始,现在推荐的方式是从命令行运行笔记本。考虑不推荐使用和未维护的 runipy。” ——塞巴斯蒂安·帕尔马
安装允许在终端上运行代码的 runipy 库
pip install runipy
只需编译您的代码后:
runipy <YourNotebookName>.ipynb
您也可以尝试 cronjob。所有信息都在这里
您还可以使用该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
我有同样的问题,我找到了papermill。与其他解决方案相比,优势在于您可以在笔记本运行时查看结果。当笔记本需要很长时间时,我发现此功能很有趣。这是非常容易使用:
pip install papermill
papermill notebook.ipynb output.ipynb
它还有其他方便的选项,例如将输出文件保存到 Amazon S3、Google Cloud 等。有关更多信息,请参阅页面。