Ubuntu Cronjob은 conda 환경을 실행할 수 없습니다.

Ubuntu Cronjob은 conda 환경을 실행할 수 없습니다.

EC2 Ubuntu 인스턴스에 로그인할 때마다 터미널은 다음과 같습니다.

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

기본 conda 환경을 사용하여 Jupyter 노트북에서 변환된 Python 스크립트를 실행하면 스크립트가 완벽하게 실행됩니다. 문제는 cronjob을 실행하려고 할 때 시작됩니다.

인스턴스가 시작되면(설명하겠습니다) 스크립트를 실행하는 ipython이 패키지를 찾을 수 없습니다. 기본 conda 환경이기 때문입니다. 어떻게든 소스 bash를 활성화하기만 하면 된다고 생각했는데 모두 실패했습니다. 내가 지금까지 시도한 것

  • bash를 실행해 보았습니다.
  • SHELL에 bash를 추가해 보았습니다.
  • 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.logcrontab 명령에 추가해 보는 것입니다.

virtualenv 경로가 무엇인지 확실하지 않으면 다음을 시도하십시오: ( type activate, echo $PATHprint(sys.path))

추가 정보:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758

관련 정보