2016-04-01 3 views
9

私は、cronジョブでmy_envという名前の既存のanaconda python環境を使ってpythonスクリプトを実行させたいと思っています。私が考えることができるのは、cronジョブにmy_script.bashというスクリプトを実行させ、envを起動してからpythonスクリプトを実行することだけです。 annaconda envを使ってcrontabジョブを実行する

#!/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 

。私のようにそれを私に説明することが大丈夫です。

答えて

3

しかし、bashを呼んではいけません。 sourceはbashコマンドです。

- sh scripts/my_script.bash 
+ bash scripts/my_script.bash 

それとも、bashのシェバングを追加しましたので、ちょうど

chmod +x scripts/my_script.bash 
./scripts/my_script.bash 

10

私は最近、からAnacondaに、cronジョブのenvを有効にしなくてはなりません。 AnacondaはPATH環境変数に基づいてこれを非常に簡単にします。 (私はを使用していますが、Anacondが完全にインストールされているわけではありませんが、アナコンダは同じ方法で動作するはずです)

2つの異なるアプローチがあります。

  • 私はあなたを実装し、あなたのcrontabのトップ

    PATH=/home/users/user_name/miniconda2/envs/my_env/bin

+0

にPATHを追加し、あなたのPythonスクリプトでmain.py

#!/home/users/user_name/miniconda2/envs/my_env/bin/python

  • をシェバングを追加ソリューションをUbuntu 16に導入し、Anacondaの運用に成功しました。しかし、実行されているPythonスクリプトでPANDASパッケージをインポートしようとすると、[Errno 2] Noというファイルまたはディレクトリが表示されます。理由は何ですか?私のbashコマンドの設定はかなり簡単です。 'PATH =/home/dev/anaconda3/bin' ' python/home/dev/AUTOSIFT/script.sh' – Adestin

  • +0

    あなたの質問を本当に理解していません。 script.shはPythonスクリプトではありません。これはクーロンの仕事ですか?おそらく、あなたは最初にconda install pandasをする必要があります。 –

    +1

    シェルコマンドは、Pythonスクリプトを起動します。私はこれを考え出した。問題は、実行時に.shがPATH変数を設定する必要があることでした。 – Adestin

    関連する問題