Crontab无法执行Python脚本

yeb*_*ebw 7 python crontab

crontab无法执行Python脚本.我用来运行Python脚本的命令行是可以的.

这些是我尝试的解决方案:

  • 添加#!/usr/bin/env python在顶部main.py
  • 添加PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin在顶部crontab
  • chmod 777main.py文件
  • service cron restart

我的crontab是:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

*/1 * * * * python /home/python_prj/main.py
Run Code Online (Sandbox Code Playgroud)

并且/ var/log/syslog中的日志是:

Nov  6 07:08:01 localhost CRON[28146]: (root) CMD (python /home/python_prj/main.py)
Run Code Online (Sandbox Code Playgroud)

没有别的.

main.py脚本从其他模块调用一些方法python_prj,这有关系吗?

有人可以帮帮我吗?

the*_*orn 9

main.py脚本从python_prj下的其他模块调用一些方法,这有关系吗?

是的,它确实.所有模块都需要在运行时找到.您可以通过多种方式完成此操作,但最合适的可能是在crontab中设置PYTHONPATH变量.

您可能还想在crontab中设置MAILTO变量,以便收到任何回溯的电子邮件.

[更新]这里是我的crontab的顶部:

www:~# crontab -l

DJANGO_SETTINGS_MODULE=djangocron.settings
PATH=...
PYTHONPATH=/home/django
MAILTO="cron-notices@example.com"
...
# m h  dom mon dow   command
10-50/10 * * * *               /home/django/cleanup_actions.py
...
Run Code Online (Sandbox Code Playgroud)

(每10分钟运行一次清理操作,小时除外).