Je travaille avec web.py et pour une raison quelconque, j'obtiens l'erreur suivante:

[Thu Sep 29 13:47:20 2011] [error] [client 64.8.210.120]   File "/usr/lib/python2.6/site-packages/web.py-0.36-py2.6.egg/web/db.py", line 975, in __init__
[Thu Sep 29 13:47:20 2011] [error] [client 64.8.210.120]     import MySQLdb as db
[Thu Sep 29 13:47:20 2011] [error] [client 64.8.210.120] ImportError: No module named MySQLdb

Voici mon sys.path, au cas où ce serait le coupable? Je vois le.egg, cependant, donc je ne sais pas. Pensées?

 ['', '/usr/lib/python2.6/site-packages/Bravo-1.7.2-py2.6.egg', 
    '/usr/lib/python2.6/site-packages/Twisted-11.0.0-py2.6-linux-i686.egg',
     '/usr/lib/python2.6/site-packages/construct-2.04-py2.6.egg',
 '/usr/lib/python2.6/site-packages/zope.interface-3.7.0-py2.6-linux-i686.egg', '/usr/lib/python2.6/site-packages/web.py-0.36-py2.6.egg', 
'/usr/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-linux-i686.egg', 
    '/usr/lib/python2.6/site-packages/setuptools-0.6c12dev_r88846-py2.6.egg',
     '/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', 
    '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages',
     '/usr/lib/python2.6/site-packages/PIL']

Voici le contenu du répertoire des sites-packages 2.6:

[root@xxxx ~]# locate *.egg
/root/MySQL-python-1.2.3/dist/MySQL_python-1.2.3-py2.6-linux-i686.egg
/usr/lib/python2.4/site-packages/errorhandler-1.1.1-py2.4.egg
/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
/usr/lib/python2.4/site-packages/xlrd-0.7.1-py2.4.egg
/usr/lib/python2.4/site-packages/xlutils-1.4.1-py2.4.egg
/usr/lib/python2.4/site-packages/xlutils-1.4.1-py2.5.egg
/usr/lib/python2.4/site-packages/xlwt-0.7.2-py2.4.egg
/usr/lib/python2.6/site-packages/Bravo-1.7.2-py2.6.egg
/usr/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-linux-i686.egg
/usr/lib/python2.6/site-packages/Twisted-11.0.0-py2.6-linux-i686.egg
/usr/lib/python2.6/site-packages/construct-2.04-py2.6.egg
/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
/usr/lib/python2.6/site-packages/setuptools-0.6c12dev_r88846-py2.6.egg
/usr/lib/python2.6/site-packages/web.py-0.36-py2.6.egg
/usr/lib/python2.6/site-packages/zope.interface-3.7.0-py2.6-linux-i686.egg

Si j'ouvre python (2.4 ou 2.6), je peux import MySQLdb sans problème.

Merci Tom

0
Thomas Thorogood 29 sept. 2011 à 23:58

3 réponses

Meilleure réponse

Au bas de votre fichier bashrc (généralement dans /etc/bashrc), mettez ceci (ou mettez simplement à jour la variable env PYTHONPATH pour inclure /usr/lib/python2.6/site-packages):

if [ $PYTHONPATH ]
then
    export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.6/:/usr/lib/python2.6/site-packages/
else
    export PYTHONPATH=/usr/lib/python2.6/:/usr/lib/python2.6/site-packages/
fi

Ou, pour l'utilisateur spécifique qui exécute le script, mettez ce qui précède dans /home/[USER_RUNNING_SCRIPT]/.bashrc.

Puis sourcez le fichier:

$ source ~/.bashrc
# or
# source /etc/bashrc
1
chown 29 sept. 2011 à 21:19

Vous pouvez télécharger mysqldb à: http://sourceforge.net/projects/mysql-python/

0
user904550user904550 29 sept. 2011 à 21:01

Essayez d'écrire une page simple pour afficher le sys.path tel qu'il existe à partir de l'environnement d'exécution du serveur Web. Je ne sais pas si c'est ce que vous montrez lorsque vous montrez votre sys.path dans votre question ou si vous l'avez exécuté de manière interactive à partir de votre connexion. Il est probable que l'ID utilisateur sous lequel le serveur http s'exécute ait un environnement différent de celui que vous avez en tant qu'utilisateur normal.

0
John Gaines Jr. 29 sept. 2011 à 21:29