Ubuntu Cronjobはconda環境を実行できません

Ubuntu Cronjobはconda環境を実行できません

ec2 Ubuntuインスタンスにログインするたびに、ターミナルは次のようになります

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

Jupyter ノートブックから変換した Python スクリプトをデフォルトの conda 環境で実行すると、スクリプトは完璧に実行されます。問題は、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

関連情報