使用Cron运行用Spyder IDE编写的python脚本

时间:2017-10-05 10:46:17

标签: python cron anaconda scheduling spyder

我已经使用Spyder作为Anaconda中的IDE编写了我的第一个python脚本。好极了!该脚本从谷歌财务中提取数据并通过电子邮件发送给我。在Spyder内部运行时,它可以正常工作。

现在我想安排该脚本在白天的特定时间运行。因此,在研究之后,我尝试使用以下语法设置要在Cron中运行的作业:

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

我认为这会在12:15运行脚本,但没有任何反应。

我尝试通过在IDLE中打开脚本并运行它或从终端运行它来进行实验,但我无法使用任何这些脚本,因为它告诉我没有导入任何模块。

所以...有人能告诉我如何安排在Spyder中编写的python脚本在特定时间运行吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

您需要在Cron中指定PATH变量并确保其中包含python3。 (从你的评论看起来你使用python3,确保你知道你是否使用2或3,只需输入python通常默认为python 2)你可以使用以下方式进行正常编辑:

crontab -e 

然后在调用你的工作之前添加python的完整路径。编辑:此路径需要是您的anaconda环境python的路径(以避免系统上其他版本的python之间的兼容性问题)。

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

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

请参阅How to get CRON to call in the correct PATHs

如果你没有在你的PATH中包含包含anaconda环境python3的文件夹,它将不会像在spyder中那样运行。如果你想知道aaconda版本的python在bash中输入的位置:

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

如果你的命令包含你的anaconda环境python的调用,那么你不需要shebang pythonscript.py。如果你不想在crontab的命令中包含对python的调用,那么在第一行的python脚本中包含shebang。

这些可能有用: run a crontab job using an annaconda env(见第二个答案)

https://conda.io/docs/user-guide/tasks/manage-environments.html(管理conda环境的指南)

答案 1 :(得分:0)

首先检查你的脚本是否包含python shebang。

#!/usr/local/bin/python

上面将是你的python环境的路径,这将运行得很好或改变你的cron语法,并告诉它调用python来运行你的文件和

  

使用您的文件的完整路径,例如/ home / users /.....

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

答案 2 :(得分:0)

目标-我使用Spyder(conda base)创建了python脚本(Scipt X),我想将其安排在cron中。 解决方案-我再创建一个脚本(脚本Y),写在代码下方

预先:- 在终端中键入以下命令,切换到conda env

  1. conda activate //切换到conda env
  2. 哪个python //在我的情况下检查python版本(〜anaconda3 / bin / python)

下面的脚本Y中的代码:

import os,import subprocess
subprocess.call("~anaconda3/bin/python <FULL SCRIPT X PATH>")

我在crontab中将此称为(脚本Y)。 Crontab条目

min hour date month week ~anaconda3/bin/python <full path to Script Y>

您现在可以在crontab中安排spyder脚本了。