PYTHONPATH breaks MySQLdb
Diez B. Roggisch
deets at nospam.web.de
Fri Apr 25 09:02:29 EDT 2008
Aljosa Mohorovic schrieb:
> i have a working MySQLdb module (/usr/lib/python2.4/site-packages/
> MySQL_python-1.2.2-py2.4-linux-i686.egg), using it without problems.
>
> "clean shell" after login:
> python -c "import MySQLdb" reports no errors
>
> if i export PYTHONPATH:
> export PYTHONPATH=/var/www/projects/uv_portal/portal
>
> python -c "import MySQLdb" reports no errors as in previous case
>
> if i export PYTHONPATH:
> export PYTHONPATH=/var/www/projects/uv_portal/portal/apps
>
> i get this:
> python -c "import MySQLdb"
> Traceback (most recent call last):
> File "<string>", line 1, in ?
> ImportError: No module named MySQLdb
>
> is there any reason why this happens?
Yes. You found a secret that nobody was supposed to know: Python doesn't
allow portal applications te be written! So it scans the pythonpath for
a suffix of "portal/apps", and refuses to import anything if it finds it.
Seriously: yes, there must be a reason, but nobody can tell because we
don't know & see what is beyond the apps-dir that might cause trouble.
Generally speaking, given that you can properly import MySQLdb without
any path set, you need to see if there is anything in your path that
somehow gets imported first and e.g. alters the sys.path.
Try
python -vc 'import MySQLdb'
and if that doesn't make things clearer, use strace.
Diez
More information about the Python-list
mailing list