繁体   English   中英

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

[英]Unable to execute a python 2.7 script via crontab, but can execute it manually. What gives?

我编写了一个 python 脚本 2.7 版本,在 Ubuntu 操作系统中,如果我手动执行它,它将成功运行,但是当我将它放入 cronjob 时,它将无法工作 - 您将收到随机库路径或未找到模块的错误,具体取决于您的内容导入/包含。 我已经阅读了几乎相同的问题 stackoverflow,但提供的解决方案仍然对我不起作用。 Python 脚本未在 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

一般来说(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

祝你好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM