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.log
crontabコマンドに追加することです。
virtualenvパスが何であるかわからない場合は、次のことを試してください:(type activate
、echo $PATH
などprint(sys.path)
)
追加情報:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758