2017-10-05 10 views
1

私は最初のpythonスクリプトをSpacerをAnacondaのIDEとして使っています。わーい!スクリプトはGoogleの金融からデータを引き出し、それを私にメールします。 Spyderの中で実行するとうまく動作します。Cronを使ってSpyder IDEで書かれたpythonスクリプトを実行する

今、そのスクリプトをその日の特定の時刻に実行するようにスケジュールしたいと思います。だから、研究の後、私は次の構文でのcronで実行するジョブを設定することを試みた:

15 12 * * * users/paul/desktop/pythonscript.py 

私は、これは12時15分でスクリプトを実行するだろうと思ったが、何も起こりません。

私は、IDLEでスクリプトを開いて実行してみましたが、ターミナルから実行してみましたが、いずれのモジュールもインポートされていないことがわかったので、動作させることはできません。

だから誰でも特定の時間に実行するようにSpyderで書かれたPythonスクリプトをスケジュールする方法を教えてもらえますか?

ありがとうございます!

+0

が見えます。そうですか?下記の私の更新された答えを見てください。 cronでPATHを指定する必要があります。 – 9Breaker

+0

また、初めてcronを使用しているので、開いているシェルで出力が表示されないことがわかります。ジョブはバックグラウンドで実行されます。スクリプトがファイルを出力しない、またはログファイルを作成しない場合、std outは失われます。スクリプトが実行されているかどうかを確認する場合は、出力をログファイルに送信する必要があります。 https://superuser.com/questions/122246/how-can-i-view-results-of-my-cron-jobs – 9Breaker

答えて

1

あなたはクロン内PATH変数を指定してのpython3がそれであることを確認する必要があります。

crontab -e 

:あなたはと、このように通常の編集を行うことができます(あなただけのpythonを入力すると、通常のpython 2にデフォルト設定されます、あなたは2または3を使用している場合、あなたが知っていることを確認し、のpython3を使用しているあなたのコメントからのように見えます)その後、あなたの仕事への呼び出しの前に、pythonへのフルパスを追加します。編集:このパスはanaconda環境のpythonへのパスでなければなりません(システム上の他のバージョンのpythonとの互換性の問題を避けるため)。

PATH=path/to/anaconda/env/bin #you need to look this up 

15 12 * * * python3 users/paul/desktop/pythonscript.py 

あなたのPATHにあるアナコンダ環境のpython3を含むフォルダが含まれていない場合は、スパイダーでないように、それは正確に実行されませんHow to get CRON to call in the correct PATHs

を参照してください。 pythonのアナコンダバージョンはbashでこれを入力している場所がわからしたい場合:あなたのコマンドは、あなたのアナコンダ環境のpythonへの呼び出しが含まれて

conda info --envs 
conda env list #or you could try this 

場合は、 pythonscript.pyでシェバングを必要としません。 crontabのコマンドにpythonの呼び出しを含めたくない場合は、最初の行にpythonスクリプトにshebangを含めます。

これらは有用である可能性がある:あなたがのpython3を使用しているよう run a crontab job using an annaconda env(そこに第二の回答を参照してください)

https://conda.io/docs/user-guide/tasks/manage-environments.html(conda環境を管理するためのガイド)

+0

私は何かが欠けているに違いありません。私はそのシバンを入れ、パスを20 9 * * * /Library/Frameworks/Python.framework/Versions/3.6/bin/python3/Users/lindseymiller/Desktop/Notify2.pyのフルパスに変更し、仕事。間違った構文ですか? – pmillerhk

+0

そうするには、2つの間にスペースが必要です。 yourLongPathToPython(スペースがあることを確認してください)yourPathToYourScript。 – 9Breaker

+0

python3へのフルパスを入力しない場合は、PATH変数を定義することもできます(上記の例を参照)。そうすれば、bashはPATHで指定されたフォルダを探し、python3を探します。いずれにしてもうまくいくはずですが、PATHを定義する場合は、スペースを正確にコピーすることをお勧めします(bashは変数定義に関してはスペースで特に指定します) – 9Breaker

0

まず、あなたのスクリプトにpythonのシボンが含まれているかどうかを確認します。上記

#!/usr/local/bin/python 

あなたのpython環境のパスと、これがうまく実行するか、またはあなたのcronの構文を変更し、ファイルを実行するためのpythonを呼び出すためにそれを教えてくれますし、

はのためのあなたの完全なパスを使用します。こうした/ホーム/ユーザーなど、あなたのファイル/ .....

15 12 * * * python users/paul/desktop/pythonscript.py 
+0

を参照してくださいありがとうが、それでも動作しません。 #!/ usr/bin/env python3であり、cronタブのフルパスはpython /Users/paul/desktop/pythonscript.pyです。私が間違っていることは何か考えていますか? – pmillerhk

+0

ユーザーを追加してみてください 15 * * * root python /Users/paul/desktop/pythonscript.py –

関連する問題