Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot Import Python MySQL module when running a script using crontab

I am using crontab to run a python script that requires the module MySQLdb. When I run this script from the command line everything works fine. However, trying to run it using crontab elicits this error.

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

I did a google search and added this to the top of my script #!/usr/bin/python. However, this didn't do anything and I am still getting the same error. What am I doing wrong?

like image 674
Spencer Avatar asked Nov 01 '11 18:11

Spencer


1 Answers

Define PYTHONPATH at the top of your crontab. Defining all these environment variables (below) can help you avoid some common cron problems relating to the lack of environment variables:

USER=...
HOME=/home/...
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$HOME/bin
PYTHONPATH=...
DISPLAY=:0.0
MAILTO=...
LANG=en_US.UTF-8

To find out the path to MySQLdb, open a python shell and type:

>>> import MySQLdb
>>> MySQLdb.__file__
'/usr/lib/pymodules/python2.7/MySQLdb/__init__.pyc'

Your path my differ. In the example above, the appropriate dir to add to PYTHONPATH would be /usr/lib/pymodules/python2.7 (though you should not have to add this particular path since your python executable should have this path in its sys.path automatically).

like image 129
unutbu Avatar answered Oct 23 '22 05:10

unutbu