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

.profile나는 virtualenv가 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 $PATH, print(sys.path)등)

더 많은 정보:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758

관련 정보