为什么当我手动执行脚本但使用crontab却不起作用时,脚本为何起作用?

时间:2019-05-26 16:01:02

标签: python cron debian-stretch

我的 Raspberry Pi 3 (运行debain拉伸)已连接到中继板上。

两个Python脚本正在打开/关闭它。 当我手动运行脚本时,它可以工作,而当我让crontab进行操作时,似乎只能在“ on”上工作。我不知道自己做错了什么。

我已经阅读了一些帖子,其中包括一个shebang,使文件可写,...

on.py

#!/usr/bin/python3
from gpiozero import OutputDevice
light = OutputDevice(2)
light.on()

off.py

#!/usr/bin/python3
from gpiozero import OutputDevice
light = OutputDevice(2)
light.off()

在“ crontab -e”中,我写道:

0 11 * * * /home/pi/Desktop/off.py

1 个答案:

答案 0 :(得分:0)

捕获错误的详细文本,如python所见。 您的cron的此更新版本应该可以解决问题:

0 11 * * * /home/pi/Desktop/off.py 1> /tmp/myerr.txt 2>&1

...然后再次失败,请使用文本编辑器查看/tmp/myerr.txt中是否有错误消息。

如果错误是python定位/执行gpio库时出现的问题,则以下建议会有所帮助。

一种告诉python您正在使用的库位置的方法是使用类似这样的方法:

PYTHONPATH=/foo/bar/baz python somescript.py somecommand

详细的in this well-voted answer

确保在cron调用和手动调用中都使用指向PYTHONPATH中文件/文件夹的绝对路径;这将消除cron由于相对路径问题而找不到您的库的可能性。

作为PYTHONPATH的替代方案,您可以使用sys.path.append as detailed here

This linkthis link对于gpiozero安装issus可能会有所帮助。