Traceback when trying to run script from cron?

Carsten Haese carsten at uniqsys.com
Tue Apr 17 15:48:24 EDT 2007


On Tue, 2007-04-17 at 12:33 -0700, erikcw wrote:
> You're right.  Something is not right with my sys.path.
> 
> cron:
> '/home/lybp/public_html/winneralert', '/usr/lib/python2.2', '/usr/lib/
> python2.2/plat-linux2', '/usr/lib/python2.2/lib-tk', '/usr/lib/
> python2.2/lib-dynload', '/usr/lib/python2.2/site-packages']
> Traceback (most recent call last):
>  File "/home/lybp/public_html/winneralert/wa.py", line 18, in ?
>    import MySQLdb
> ImportError: No module named MySQLdb
> 
> 
> SHELL:
> # python wa.py
> ['/home/lybp/public_html/winneralert', '/usr/local/lib/python2.4/site-
> packages/setuptools-0.6c5-py2.4.egg', '/usr/local/lib/python2.4/site-
> packages/MySQL_python-1.2.2-py2.4-linux-i686.egg', '/usr/local/lib/
> python24.zip', '/usr/local/lib/python2.4', '/usr/local/lib/python2.4/
> plat-linux2', '/usr/local/lib/python2.4/lib-tk', '/usr/local/lib/
> python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages']
> +OK Hello there.
> 
> Why isn't cron able to import the MySJL module?  How do I make this
> work? (newbie)

You have two Python versions installed on your system. Cron picks the
system-installed Python 2.2 in /usr, whereas your shell picks the
installation of Python 2.4 in /usr/local. Obviously, your Python 2.2
installation doesn't know MySQL, your Python 2.4 installation does.

Your cron script needs to set the PATH environment variable correctly to
include /usr/local/bin before /usr/bin so that it'll launch the correct
Python version.

HTH,

Carsten





More information about the Python-list mailing list