解決:crontab執行python no model name xxx問題

啓動定時:crontab -e

50 16 * * * source /etc/profile && cd /home/AA/BB && nohup python remindmail.py > remindmail.log 2>&1 &

但是並沒有定時產生,查看log

Traceback (most recent call last):
  File "remindmail.py", line 5, in <module>
    import MySQLdb
ImportError: No module named MySQLdb

這就很奇怪,我直接進行在終端運行

$ python remindmail.py  # 這就可以直接運行,喵喵喵?

百度了一下之後,才知道和路徑有關,所以開始解決

確認python路徑

which python
~/Python/ENV/bin/python

然後終端實現

$ ~/Python/ENV/bin/python remindmail.py  # 可行

然後放入crontab裏面,和剛開始唯一的區別是,指定了python的運行路徑


50 16 * * * source /etc/profile && cd /home/AA/BB && nohup ~/Python/ENV/bin/python remindmail.py > remindmail.log 2>&1 &

成功


尾巴

# 可見各個版本之間的問題
$ /usr/local/bin/python -V
Python 2.7.9

$ /usr/bin/python -V
Python 2.6.6

$ which python  # 這是我們直接輸入python xx.py執行的路徑
/usr/local/bin/python

我們最終的目的就在於,模擬終端輸入,只是用crontab進行定時例行而已,crontab裏面估計默認的路徑,所以需要用絕對路徑來做,對於沒有配置好環境的服務器,在此操作時候更加需要使用絕對路徑!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章