2017-10-05 119 views
1

我已经在Anaconda内使用Spyder作为IDE编写了我的第一个python脚本。好极了!该脚本从谷歌金融中提取数据并将其发送给我。在Spyder中运行时,它工作正常。使用Cron运行用Spyder IDE编写的python脚本

现在我想安排脚本在白天的特定时间运行。所以,研究后,我试图建立工作,在cron使用下面的语法运行:

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

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

我试图在IDLE打开脚本并运行它或者从终端运行它进行试验,但我不能让任何这些工作,因为它告诉我,没有一个模块是进口的。

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

谢谢!

+0

看起来像你使用python3。是对的吗?看到我下面更新的答案。你需要在cron中指定PATH。 – 9Breaker

+0

另外,由于这是您第一次使用cron,因此您应该知道在开放shell中不会看到任何输出。该作业在后台运行。如果您的脚本不输出文件或创建日志文件,那么您的标准输出将会丢失。如果您正在查找脚本正在运行的验证,则需要将输出发送到日志文件。见https://superuser.com/questions/122246/how-can-i-view-results-of-my-cron-jobs – 9Breaker

回答

1

你需要指定范围内的Cron的PATH变量,并确保python3是它。 (这看起来从你的意见,你正在使用python3,确保你知道,如果你使用的是2或3,只是打字蟒蛇通常会默认为蟒蛇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森蚺环境python3的文件夹,它会不完全运行像它的Spyder一样。如果你想知道蟒森蚺的版本是在bash中键入:

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

如果命令包含调用您的蟒蛇环境蟒蛇,那么你就不需要在 pythonscript.py的家当。如果您不想要在crontab中的命令调用蟒蛇,然后包括在第一行的Python脚本的家当。

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

https://conda.io/docs/user-guide/tasks/manage-environments.html(引导管理畅达环境)

+0

我必须缺少一些东西。我把那个shebang放进去,并改变了路径到20 9 * * /Library/Frameworks/Python.framework/Versions/3.6/bin/python3/Users/lindseymiller/Desktop/Notify2.py的完整路径,它仍然赢得了'工作。错误的语法? – pmillerhk

+0

如果你想这样做,你将需要两者之间的空间。 yourLongPathToPython(确保有空格)yourPathToYourScript。 – 9Breaker

+0

如果你不想输入python3的完整路径,你也可以定义PATH变量(参见上面的例子)。这样bash会查找PATH中指定的文件夹并尝试查找python3。无论哪种方式都应该可以工作,但是如果你选择定义PATH,那么确保你准确地复制间距(当涉及到变量定义时,bash对于空格是特别的) – 9Breaker

0

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

#!/usr/local/bin/python 

上述会把你的蟒蛇enviornment的路径,这将运行得很好或更改您的cron语法,并告诉它调用Python运行你的文件和

使用您的完整路径您的文件如/ home /用户/ .....

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

谢谢,但它仍然无法正常工作。我在python中有这个shebang:#!/ usr/bin/env python3,cron标签中的完整路径是python /Users/paul/desktop/pythonscript.py。任何想法我做错了什么? – pmillerhk

+0

尝试将用户添加到它 15 12 * * * root python /Users/paul/desktop/pythonscript.py –