我已经编写了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
答案 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
祝你好运