Ubuntu Cronjob não pode executar o ambiente conda

Ubuntu Cronjob não pode executar o ambiente conda

Sempre que eu faço login na minha instância ec2 do Ubuntu, meu terminal fica assim

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

Quando executo meu script Python, que é convertido de um notebook Jupyter com o ambiente conda padrão, o script é executado perfeitamente. O problema começa quando tento fazer um cronjob.

Quando a instância é iniciada (tentarei explicar da melhor maneira possível), o ipython que executa o script não consegue encontrar os pacotes. Porque é o ambiente conda padrão. Achei que tudo o que precisava fazer era ativar de alguma forma o bash de origem, mas tudo falhou. O que eu tentei até agora

  • Eu tentei executar o bash
  • Eu tentei adicionar ao SHELL o bash
  • Eu tentei obter o bash
  • Tentei executar o ipython diretamente do ambiente conda

Neste ponto não sei o que estou perdendo. Tudo que eu quero é quando a instância começar a "ativar" o ambiente conda e com o ipython executar o script.

Responder1

Eu diria que o virtualenv está sendo ativado .profile, o que não afeta o cron.

Eu sugiro ativar o venv na linha crontab:

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

Definir SHELL=/bin/bash não é realmente obrigatório, mas o deixará mais próximo do ambiente "normal". Se necessário, defina também o PATH, cd no diretório correto, etc.

Uma maneira decente de testar é: ssh you@yourserver 'the command above' Se você estiver tendo problemas para obter o erro, tente anexar &>/tmp/debug.logao comando crontab.

Se você não tiver certeza de qual é o caminho do virtualenv, tente: type activate( echo $PATH, print(sys.path), etc.)

Mais informações:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758

informação relacionada