【问题标题】:Crontab to run python script that uses a virtual environmentCrontab 运行使用虚拟环境的 python 脚本
【发布时间】:2018-09-07 08:40:18
【问题描述】:

目前我有一个使用名为 myenv 的虚拟环境的 python 脚本。在终端运行脚本的命令如下:

cd env && source activate env && bin/env-dev python ~/Documents/test/ingest.py

当我尝试在 crontab 中进行设置时,我不断收到“找不到命令”的错误消息。 在 cron 选项卡中,我尝试了一些不同的选项:

1) 使用 bash(最后一步是将错误写入文本文件)。这实际上适用于文件路径中不需要源激活 myenv 的其他脚本。所以当我添加 source activate myenv 时问题就存在了。

* * * * * bash -c 'cd env && source activate env && bin/env-dev python ~/Documents/test/ingest.py' >> ~/test_cron.txt 2>&1

screenshot of terminal with the bash command

2) 没有 bash

* * * * * cd env && source activate env && bin/env-dev python ~/Documents/test/ingest.py

3) 我也尝试在 crontab 顶部添加 PATH=/Users/mattzerweck/miniconda3/envs/myenv ,但没有成功执行 bash。

有人对此有解决方案吗?我似乎还没有找到一个在线工作的解决方案,并且需要这个脚本在每天早上 5 点自动运行。 (目前每分钟用于测试目的)

【问题讨论】:

  • 导致command not found 的部分是什么?是bin/env-dev吗?此外,最新版本的 conda 中的命令是 conda activate 而不是 source activate。您需要确保 conda 可执行文件位于运行 cron 作业的用户的 PATH 上。
  • 另外,当您的用户运行该命令时,它是否有效?
  • 2) 在我的命令行中工作,所以当用户运行它时它工作。当我运行 crontab 时导致“找不到命令”的部分是当我包含 source activate env 时。我正在本地运行 cron,只需要弄清楚如何让我提到的第二个选项能够在 cron 上工作。

标签: cron miniconda


【解决方案1】:

找到一个有效的答案。必须在命令之前设置路径和外壳。 Cron 没有拉出我正确的文件路径。

【讨论】:

  • 你能通过一些代码来展示你是如何解决这个问题的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2022-01-11
  • 2020-02-10
相关资源
最近更新 更多