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 activateecho $PATHなどprint(sys.path)

追加情報:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758

おすすめ記事