Python 为什么我的脚本可以工作,当我手动执行它时,但是使用crontab它不能';不行?

Python 为什么我的脚本可以工作,当我手动执行它时,但是使用crontab它不能';不行?,python,cron,debian-stretch,Python,Cron,Debian Stretch,MyRaspberry Pi 3(跑步Deban stretch)连接到继电器板 两个Python脚本正在打开/关闭它。 当我手动运行脚本时,它可以工作,当我让crontab只在“开”的情况下运行时,它似乎可以工作。我想不出我做错了什么 我读了一些帖子,包括一个shebang,使文件可写 平日 #/usr/bin/python3 从gpiozero导入输出设备 灯=输出设备(2) 光照 off.py #/usr/bin/python3 从gpiozero导入输出设备 灯=输出设备(2) 熄灯

MyRaspberry Pi 3(跑步Deban stretch)连接到继电器板

两个Python脚本正在打开/关闭它。 当我手动运行脚本时,它可以工作,当我让crontab只在“开”的情况下运行时,它似乎可以工作。我想不出我做错了什么

我读了一些帖子,包括一个shebang,使文件可写

平日

#/usr/bin/python3
从gpiozero导入输出设备
灯=输出设备(2)
光照
off.py

#/usr/bin/python3
从gpiozero导入输出设备
灯=输出设备(2)
熄灯
在“
crontab-e
”中,我写道:

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

捕获错误的详细文本,如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
如详细所述

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

作为PYTHONPATH的替代,您可以使用sys.path.append


并且可能有助于gpiozero安装问题。

捕获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
如详细所述

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

作为PYTHONPATH的替代,您可以使用sys.path.append


并且可能对gpiozero安装问题有帮助。

您记得chmod+x他们吗?@JulioP.C。手动启动也可能不起作用。如果未标记为可执行。除非它的所有者标记为+x,而不是所有用户…他可以通过调用命令行上的python解释器手动启动它,而无需指定可执行标志。这两个文件都是“任何人”(右键单击->属性->权限)的可执行文件。我刚刚注意到一些事情。当双击文件时,我会看到一个窗口,上面写着“执行”、“打开”。。。。当我单击“执行”时,它不工作。当我单击open时,Thonny打开,我单击绿色的“运行当前脚本”按钮,它就工作了。这有用吗?你记得chmod+x他们吗?@JulioP.C。手动启动也可能不起作用。如果未标记为可执行。除非它的所有者标记为+x,而不是所有用户…他可以通过调用命令行上的python解释器手动启动它,而无需指定可执行标志。这两个文件都是“任何人”(右键单击->属性->权限)的可执行文件。我刚刚注意到一些事情。当双击文件时,我会看到一个窗口,上面写着“执行”、“打开”。。。。当我单击“执行”时,它不工作。当我单击open时,Thonny打开,我单击绿色的“运行当前脚本”按钮,它就工作了。这有用吗?他正在使用绝对文件路径。看看他的crontab行,我编辑了我的答案,以澄清我认为更好的路径将有所帮助的地方。您好,谢谢您的回答。我不确定我是否明白你的意思。这是否意味着我不是从gpiozero导入中编写
而是从/usr/lib/python3/dist-packages/gpiozero导入中编写
如果这就是你的意思:1。它不起作用,2。这对我来说毫无意义。脚本“on.py”正在使用crontab。这两个文件对于“任何人”(右键单击->属性->权限)都是可执行的。我用建议更新了我的评论,以获得错误的详细文本,以及如何避免python查找gpio库时出现问题。他使用的是绝对文件路径。看看他的crontab行,我编辑了我的答案,以澄清我认为更好的路径将有所帮助的地方。您好,谢谢您的回答。我不确定我是否明白你的意思。这是否意味着我不是从gpiozero导入中编写
而是从/usr/lib/python3/dist-packages/gpiozero导入中编写
如果这就是你的意思:1。它不起作用,2。这对我来说毫无意义。脚本“on.py”正在使用crontab。这两个文件对于“任何人”(右键单击->属性->权限)都是可执行的。我用建议更新了我的评论,以获取错误的详细文本,以及如何避免python查找gpio库时出现问题。