如何 运行 一个 Jupyter notebook 每天自动写 Python 代码?
How to run a Jupyter notebook with Python code automatically on a daily basis?
我在 Jupyter notebook 中有一些 Python 代码,我需要每天自动 运行 它,所以我想知道是否有办法设置它。我非常感谢对此的任何建议。
更新
最近我遇到了用于执行和参数化笔记本的 papermill。
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,你还有更多选择。我喜欢这个选项,因为你之后有一个完全可执行的 "log"-File。
我建议对您的笔记本 运行 使用虚拟环境,以避免将来的更新弄乱您的脚本。不要忘记将 nbconvert 安装到环境中。
现在创建一个 cronjob,每天 运行s 例如在 5:10 AM,在您的终端中输入 crontab -e
并添加此行:
10 5 * * * /path/to/yourscript.sh
如果你想要更高的质量,最好结合airflow。
我将它们打包成 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 中安排时间
试试 SeekWell Chrome Extension。它允许您直接从 Jupyter Notebooks 将笔记本安排为 运行 每周、每天、每小时或每 5 分钟。如果愿意,您也可以将 DataFrames 直接发送到 Sheets 或 Slack。
这是一个 demo video,在上面的 Chrome 网上商店 link 中也有更多信息。
**披露:我是 SeekWell 的联合创始人
使用 Papermill. I also find convenient to share/version control the notebook either as a Markdown file or a Python script with Jupytext 可以方便地使用参数执行 Jupyter 笔记本。然后我用 nbconvert
将笔记本转换为 HTML 文件。通常我的工作流程是这样的:
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
了解更多关于上面的内容,包括如何指定笔记本预期运行的Python环境,以及如何在笔记本上使用持续集成,看看我的文章使用 Jupyter 笔记本(使用 Jupytext 和 Papermill)自动生成报告,您可以在 Medium, GitHub, or on Binder 上阅读。如果您想以交互方式测试文章中命令的结果,请使用 Binder link。
正如其他人所提到的,造纸厂是必经之路。 Papermill 只是 nbconvert
具有一些额外的功能。
如果您想处理多个相互依赖的笔记本的工作流程,您可以尝试 Airflow's integration with papermill. If you are looking for something simpler that does not need a scheduler to run, you can try ploomber,它也与 papermill 集成(免责声明:我是作者)。
您想使用当前在 EAP 中的 Google AI Platform Notebooks 调度程序服务。
您可以下载.py形式的notebook,然后创建一个批处理文件来执行.py脚本。然后在任务调度器中调度批处理文件
手动运行你的笔记本:
jupyter nbconvert --to notebook --execute /home/username/scripts/mynotebook.ipynb
创建一个简单的批处理文件并将上面的命令添加到文件中:
/home/username/scripts/mynotebook.sh
将上面的命令粘贴到文件中
使文件可执行
chmod +x /home/username/scripts/mynotebook.sh
要安排您的笔记本使用 cron 或 airflow,取决于您的需求和复杂性。如果你想使用 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
我在 Jupyter notebook 中有一些 Python 代码,我需要每天自动 运行 它,所以我想知道是否有办法设置它。我非常感谢对此的任何建议。
更新
最近我遇到了用于执行和参数化笔记本的 papermill。
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,你还有更多选择。我喜欢这个选项,因为你之后有一个完全可执行的 "log"-File。
我建议对您的笔记本 运行 使用虚拟环境,以避免将来的更新弄乱您的脚本。不要忘记将 nbconvert 安装到环境中。
现在创建一个 cronjob,每天 运行s 例如在 5:10 AM,在您的终端中输入 crontab -e
并添加此行:
10 5 * * * /path/to/yourscript.sh
如果你想要更高的质量,最好结合airflow。 我将它们打包成 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 中安排时间
试试 SeekWell Chrome Extension。它允许您直接从 Jupyter Notebooks 将笔记本安排为 运行 每周、每天、每小时或每 5 分钟。如果愿意,您也可以将 DataFrames 直接发送到 Sheets 或 Slack。
这是一个 demo video,在上面的 Chrome 网上商店 link 中也有更多信息。
**披露:我是 SeekWell 的联合创始人
使用 Papermill. I also find convenient to share/version control the notebook either as a Markdown file or a Python script with Jupytext 可以方便地使用参数执行 Jupyter 笔记本。然后我用 nbconvert
将笔记本转换为 HTML 文件。通常我的工作流程是这样的:
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
了解更多关于上面的内容,包括如何指定笔记本预期运行的Python环境,以及如何在笔记本上使用持续集成,看看我的文章使用 Jupyter 笔记本(使用 Jupytext 和 Papermill)自动生成报告,您可以在 Medium, GitHub, or on Binder 上阅读。如果您想以交互方式测试文章中命令的结果,请使用 Binder link。
正如其他人所提到的,造纸厂是必经之路。 Papermill 只是 nbconvert
具有一些额外的功能。
如果您想处理多个相互依赖的笔记本的工作流程,您可以尝试 Airflow's integration with papermill. If you are looking for something simpler that does not need a scheduler to run, you can try ploomber,它也与 papermill 集成(免责声明:我是作者)。
您想使用当前在 EAP 中的 Google AI Platform Notebooks 调度程序服务。
您可以下载.py形式的notebook,然后创建一个批处理文件来执行.py脚本。然后在任务调度器中调度批处理文件
手动运行你的笔记本:
jupyter nbconvert --to notebook --execute /home/username/scripts/mynotebook.ipynb
创建一个简单的批处理文件并将上面的命令添加到文件中:
/home/username/scripts/mynotebook.sh
将上面的命令粘贴到文件中
使文件可执行
chmod +x /home/username/scripts/mynotebook.sh
要安排您的笔记本使用 cron 或 airflow,取决于您的需求和复杂性。如果你想使用 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