Ubuntu Cronjob无法执行conda环境

Ubuntu Cronjob无法执行conda环境

每当我登录到我的 ec2 Ubuntu 实例时,我的终端都是这样的

(base) ubuntu@ip-xx-xx-xx

当我运行从具有默认 conda 环境的 Jupyter 笔记本转换而来的 Python 脚本时,脚本运行完美。当我尝试执行 cronjob 时,问题就开始了。

当实例启动时(我将尽力解释),运行脚本的 ipython 找不到包。因为它是默认的 conda 环境。我以为我所要做的就是以某种方式激活源 bash,但一切都失败了。到目前为止我尝试过的

  • 我尝试过执行 bash
  • 我尝试将 bash 添加到 SHELL
  • 我尝试获取 bash 的源码
  • 我尝试直接从 conda 环境运行 ipython

此时我不知道我错过了什么。我想要的只是当实例开始“激活” conda 环境并使用 ipython 运行脚本时。

答案1

我猜测 virtualenv 正在被激活.profile,这不会影响 cron。

我建议在 crontab 行中激活 venv:

SHELL=/bin/bash
[crontab stuff]  . /path/to/the/virtualenv/bin/activate && your.py

设置 SHELL=/bin/bash 并不是真正强制的,但会让你更接近“通常”的环境。如有必要,还可以设置 PATH、cd 到正确的目录等。

一个不错的测试方法是ssh you@yourserver 'the command above' 如果您遇到错误,请尝试附加&>/tmp/debug.log到 crontab 命令。

如果您不确定 virtualenv 路径是什么,请尝试:( type activateecho $PATHprint(sys.path))

更多信息:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758

相关内容