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