35

我在 Jupyter 笔记本中有一些 Python 代码,我需要每天自动运行它,所以我想知道是否有办法设置它。我非常感谢您对此的任何建议。

4

10 回答 10

30

最近更新
我遇到了用于执行和参数化笔记本的纸厂。

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
于 2018-03-27T10:13:33.513 回答
4

试试SeekWell Chrome 扩展程序。它允许您直接从 Jupyter Notebooks 安排笔记本每周、每天、每小时或每 5 分钟运行一次。如果您愿意,也可以将 DataFrame 直接发送到 Sheets 或 Slack。

这是一个演示视频,上面的 Chrome 网上应用店链接中还有更多信息。

**披露:我是 SeekWell 联合创始人

于 2019-05-01T21:01:18.470 回答
3

如果您想要更高的质量,最好与气流结合。我将它们打包在一个 docker 镜像中,https://github.com/michaelchanwahyan/datalab

它是通过修改开源包 nbparameterize 并集成传递的参数(例如 execution_date)来完成的。可以即时生成图表输出可以更新并保存在笔记本内。

执行时

  • 将读取笔记本并注入参数
  • 笔记本被执行,输出将覆盖原始路径

此外,它还安装和配置了spark、keras、tensorflow等常用工具。

于 2018-10-04T02:42:40.937 回答
2

你可以在 cronjob 中添加 jupyter notebook

0 * * * * /home/ec2-user/anaconda3/bin/python /home/ec2-user/anaconda3/bin/jupyter-notebook

您必须将 /home/ec2-user/anaconda3 替换为您的 anaconda 安装位置,并且您可以根据您在 cron 中的要求安排时间

于 2018-12-17T05:39:54.737 回答
2

正如其他人所提到的,造纸厂是要走的路。Papermill 只是nbconvert有一些额外的功能。

如果您想处理多个相互依赖的笔记本的工作流程,您可以尝试Airflow 与 papermill 的集成。如果您正在寻找不需要调度程序来运行的更简单的东西,您可以尝试也与papermill集成的 ploomber(免责声明:我是作者)。

于 2020-03-17T00:03:12.497 回答
2

使用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)可以在MediumGitHubBinder上阅读。如果您想以交互方式测试文章中命令的结果,请使用 Binder 链接。

于 2019-09-29T13:07:16.803 回答
1

手动运行笔记本:

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
于 2021-07-10T13:37:05.533 回答
0

创建一个 BAT 文件然后通过任务调度程序运行它对我有用。下面是代码。

call C:\Users\...user...\Anaconda3\condabin\conda activate
python -m notebook_file.py
pause
call conda deactivate 
于 2022-02-03T18:04:23.770 回答
0

您可以以 .py 的形式下载 notebook,然后创建一个批处理文件来执行 .py 脚本。然后在任务调度器中调度批处理文件

于 2021-02-10T12:34:31.130 回答
-3

您想使用当前在 EAP 中的Google AI Platform Notebooks Scheduler 服务。

于 2020-04-16T18:18:46.277 回答