我在 Jupyter 笔记本中有一些 Python 代码,我需要每天自动运行它,所以我想知道是否有办法设置它。我非常感谢您对此的任何建议。
10 回答
最近更新
我遇到了用于执行和参数化笔记本的纸厂。
https://github.com/nteract/papermill
papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1
这似乎比 nbconvert 更好,因为您可以使用参数。您仍然必须使用调度程序触发此命令。下面是 Ubuntu 上的 cron 示例。
旧答案
nbconvert --execute
可以执行一个 jupyter notebook,这个嵌入到 cronjob 中会做你想做的事。
Ubuntu 上的示例设置:
使用以下内容创建yourscript.sh :
/opt/anaconda/envs/yourenv/bin/jupyter nbconvert \
--execute \
--to notebook /path/to/yournotebook.ipynb \
--output /path/to/yournotebook-output.ipynb
除了 --to notebook 之外,您还有更多选择。我喜欢这个选项,因为之后你有一个完全可执行的“日志”文件。
我建议使用虚拟环境来运行您的笔记本,以避免将来的更新与您的脚本混淆。不要忘记将 nbconvert 安装到环境中。
现在创建一个 cronjob,每天运行,例如在上午 5:10,通过crontab -e
在终端中输入并添加以下行:
10 5 * * * /path/to/yourscript.sh
试试SeekWell Chrome 扩展程序。它允许您直接从 Jupyter Notebooks 安排笔记本每周、每天、每小时或每 5 分钟运行一次。如果您愿意,也可以将 DataFrame 直接发送到 Sheets 或 Slack。
这是一个演示视频,上面的 Chrome 网上应用店链接中还有更多信息。
**披露:我是 SeekWell 联合创始人
如果您想要更高的质量,最好与气流结合。我将它们打包在一个 docker 镜像中,https://github.com/michaelchanwahyan/datalab。
它是通过修改开源包 nbparameterize 并集成传递的参数(例如 execution_date)来完成的。可以即时生成图表输出可以更新并保存在笔记本内。
执行时
- 将读取笔记本并注入参数
- 笔记本被执行,输出将覆盖原始路径
此外,它还安装和配置了spark、keras、tensorflow等常用工具。
你可以在 cronjob 中添加 jupyter notebook
0 * * * * /home/ec2-user/anaconda3/bin/python /home/ec2-user/anaconda3/bin/jupyter-notebook
您必须将 /home/ec2-user/anaconda3 替换为您的 anaconda 安装位置,并且您可以根据您在 cron 中的要求安排时间
正如其他人所提到的,造纸厂是要走的路。Papermill 只是nbconvert
有一些额外的功能。
如果您想处理多个相互依赖的笔记本的工作流程,您可以尝试Airflow 与 papermill 的集成。如果您正在寻找不需要调度程序来运行的更简单的东西,您可以尝试也与papermill集成的 ploomber(免责声明:我是作者)。
使用Papermill可以方便地执行带有参数的 Jupyter 笔记本。我还发现以 Markdown 文件或带有Jupytext的 Python 脚本的形式共享/版本控制笔记本很方便。然后我将笔记本转换为带有nbconvert
. 通常我的工作流程如下所示:
cat world_facts.md \
| jupytext --from md --to ipynb --set-kernel - \
| papermill -p year 2017 \
| jupyter nbconvert --no-input --stdin --output world_facts_2017_report.html
详细了解上述内容,包括如何指定预期运行 notebook 的 Python 环境,以及如何在 notebook 上使用持续集成,请查看我的文章用 Jupyter Notebooks 自动报告(使用 Jupytext 和 Papermill)可以在Medium、GitHub或Binder上阅读。如果您想以交互方式测试文章中命令的结果,请使用 Binder 链接。
手动运行笔记本:
jupyter nbconvert --to notebook --execute /home/username/scripts/mynotebook.ipynb
创建一个简单的批处理文件并将上面的命令添加到文件中:
/home/username/scripts/mynotebook.sh
将上面的命令粘贴到文件中
使文件可执行
chmod +x /home/username/scripts/mynotebook.sh
要安排您的笔记本使用 cron 或气流,取决于您的需求与复杂性。如果你想使用 cron,你可以简单地做 crontab -e 并添加一个条目
00 11 * * * /home/username/scripts/mynotebook.sh
创建一个 BAT 文件然后通过任务调度程序运行它对我有用。下面是代码。
call C:\Users\...user...\Anaconda3\condabin\conda activate
python -m notebook_file.py
pause
call conda deactivate
您可以以 .py 的形式下载 notebook,然后创建一个批处理文件来执行 .py 脚本。然后在任务调度器中调度批处理文件
您想使用当前在 EAP 中的Google AI Platform Notebooks Scheduler 服务。