簡體   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