Ubuntu Cronjob не может выполнить среду conda

Ubuntu Cronjob не может выполнить среду conda

Всякий раз, когда я вхожу в свой экземпляр ec2 Ubuntu, мой терминал выглядит так:

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

Когда я запускаю свой скрипт Python, который конвертирован из Jupyter notebook с дефолтной средой conda, скрипт работает идеально. Проблема начинается, когда я пытаюсь сделать cronjob.

Когда экземпляр запускается (я постараюсь объяснить как можно лучше), ipython, который запускает скрипт, не может найти пакеты. Потому что это среда conda по умолчанию. Я думал, что все, что мне нужно сделать, это как-то активировать исходный bash, но все провалилось. Что я пробовал до сих пор

  • Я пробовал exec bash
  • Я пробовал добавить в SHELL bash
  • Я пробовал источник bash
  • Я пробовал запустить ipython напрямую из среды conda

На данный момент я не знаю, что я упускаю. Все, что я хочу, это когда экземпляр начнет "активировать" среду conda и с помощью ipython запустить скрипт.

решение1

Я предполагаю, что virtualenv активируется в .profile, что не влияет на cron.

Я бы предложил активировать venv в строке crontab:

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 activate( echo $PATH, print(sys.path), и т. д.)

Больше информации:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758

Связанный контент