Cronジョブでpythonスクリプトを既存のanaconda pythonという環境を使用してmy_envと呼ばれる環境で実行するようにします。 cronジョブはmy_script.bash
と呼ばれるスクリプトを実行します。これにより、envがアクティブになり、pythonスクリプトが実行されます。
#!/bin/bash
source activate my_env
python ~/my_project/main.py
コマンドラインからこのスクリプトを実行しようとしても機能しません。
$ sh scripts/my_script.bash
scripts/my_script.bash: 9: scripts/my_script.bash: source: not found
適切な環境がアクティブになっていることを確認するために何をする必要がありますか? 5歳のように説明してください。
sh
ではなくbash
を呼び出してください。 source
はbashコマンドです。
- sh scripts/my_script.bash
+ bash scripts/my_script.bash
あるいは単に
chmod +x scripts/my_script.bash
./scripts/my_script.bash
bash Shebangを追加したので。
私は最近 canopy からAnacondaに正確に切り替えて、cronジョブでenvをアクティブにする必要がないようにしました。 Anacondaは、PATH環境変数に基づいて、これを非常に単純にします。 (私は miniconda を使用していますが、完全なAnacondsインストールではありませんが、anacondaは同じように動作するはずです)
テストした方法は2つあります。
pythonスクリプト、main.pyにシバンを追加します
#!/home/users/user_name/miniconda2/envs/my_env/bin/python
Crontabの先頭にPATHを追加します
PATH=/home/users/user_name/miniconda2/envs/my_env/bin
更新:
ジェロームの答えとcbarrickのコメントは正しいです。 pynco,
のような適切なnco
コマンドを見つけるために完全なconda環境が必要なncks, ncrcat.
が必要なConda envで上記のアプローチを使用して焼き付けたところです。最初にconda activateを呼び出すcronから。
私の場合、シェルスクリプトの次の行を実行したときにこのエラーが発生しました:source activate my_env
activate: No such file or directory
だから私はsource activate my_env
からsource /path/to/conda/bin/activate my_env
。それからそれは働き始めます。