Почему мой скрипт работает, когда я выполняю его вручную, но с помощью crontab он не работает? - PullRequest
1 голос
/ 26 мая 2019

My Raspberry Pi 3 (запущенный debain stretch) подключен к плате реле.

Два скрипта Python включают и выключают его. Когда я запускаю скрипт вручную, он работает, когда я позволяю crontab делать это только, кажется, работает. Я не могу понять, что я сделал не так.

Я прочитал несколько постов и добавил шебанг, сделал файл доступным для записи, ...

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 голосов
/ 26 мая 2019

Перехватите подробный текст ошибки, как его видит 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

как подробно в этом хорошо проголосованном ответе .

Обязательно используйте абсолютный путь к файлам / папкам в PYTHONPATH в обоих ваших вызовах cronи ваш ручной вызов;это исключит возможность того, что cron не сможет найти вашу библиотеку из-за проблемы относительного пути.

В качестве альтернативы PYTHONPATH, вы можете использовать sys.path.append , как подробно описано здесь .

Эта ссылка и Эта ссылка может быть полезна для установки gpiozero issus.

...