无法通过crontab执行python 2.7脚本,但可以手动执行。是什么赋予了?

时间:2020-01-03 18:35:31

标签: python bash python-2.7 cron

我已经编写了python脚本2.7版本,如果我手动执行它,它将在Ubuntu操作系统中成功运行,但是当我将它放在cronjob中时,它将无法正常工作-您将获得随机库路径或找不到模块错误取决于您导入/包含的内容。我已经阅读了stackoverflow几乎相同的问题,但是提供的解决方案仍然对我不起作用。 Python script not executing in crontab

这只是一个简单的错误,但起初很难知道原因。

Traceback (most recent call last):
File "/var/www/project/delete.py", line 263, in <module>
pyquery('new')
NameError: pq 'new_data' is not defined

1 个答案:

答案 0 :(得分:3)

通常来说(python)脚本是位置敏感的。这与在脚本中始终使用绝对路径有关,但并不完全相同。您的cron作业可能需要先运行cd到存储脚本的特定目录,然后再运行它。

运行Cronjob时,它将使用您的主目录作为当前目录。因此,如果要将脚本放在主目录中,它将起作用。在这种情况下,脚本使用的是相对路径,假设它是相对于脚本的位置,但实际上是相对于主目录的根目录的,因为这是cron使用的工作目录,这就是为什么脚本位于主目录的根目录中时起作用。

因此,如果您必须在主目录之外的其他目录中运行它,则在cronjob中,您将需要cd进入脚本目录并按照以下示例运行它:

* * * * * cd /var/www/clientfolder/ && /usr/bin/python /var/www/clientfolder/your_python_script.py >> /var/www/clientfolder/your_python_script.log

了解原因很重要。现在应该可以了!

如果您有与脚本执行环境无关的其他问题,则可能需要阅读这篇非常好的文章CronJob not running

来源:https://www.digitalocean.com/community/questions/unable-to-execute-a-python-script-via-crontab-but-can-execute-it-manually-what-gives

祝你好运