web-dev-qa-db-fra.com

Aucun module nommé MySQLdb lors de la tentative de chargement du tableau de bord OpenStack

J'essaie d'installer OpenStack Dashboard en suivant ce guide à partir de git: http://wiki.openstack.org/OpenStackDashboard

Mais quand j'exécute cette commande pour synchroniser la base de données:

$ tools/with_venv.sh openstack-dashboard/manage.py syncdb

Il retourne que:

File "/home/user1/horizon/.venv/local/lib/python2.7/sitepackages/Django/db/backends/mysql>    /base.py", line 14, in <module>    
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
Django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

J'ai installé le paquet " python-mysqldb " plusieurs fois, mais cette erreur a quand même été générée. Quand je cours:

>>> importer MySQLdb

dans python interprète, ça va!

Et j'ai essayé d'installer via easy_install, mais MySQL-python est installé:

$ Sudo easy_install MySQL-python

Recherche de MySQL-python

Meilleure correspondance: MySQL-python 1.2.3 MySQL-python 1.2.3 est déjà la version active de easy-install.pth

Utilisation de /usr/lib/pymodules/python2.7

Dépendances de traitement pour MySQL-python

Dépendances de traitement terminées pour MySQL-python

Voici le contenu de tools/with_venv.sh

#!/bin/bash
TOOLS=`dirname $0`
VENV=$TOOLS/../.venv
source $VENV/bin/activate && $@

Quand je lance: tools/with_venv.sh , il ne retourne rien.

Quel est le problème dans mon cas?

1
neo0

J'ai aussi posé cette question dans le tableau de bord. Dieu merci, ils m'aident à résoudre ce problème. https://answers.launchpad.net/horizon/+question/189051

En exécutant cette commande pour installer MySQL-python

$ tools/with_venv.sh pip install MySQL-python

@ Ken: Merci. Vous avez raison. Mais je ne comprends pas quelle est la différence entre easy_install et commande pip ! Je vérifierai plus tard.

0
neo0

Avec virtualenv, vous avez votre propre environnement spécifiquement pour cette application. Si vous utilisez --no-site-packages, les modules système installés en dehors de la bibliothèque standard ne seront pas utilisés.

La solution consiste à activer l'environnement virtuel et à l'installer à cet endroit. Essayez quelque chose comme ça:

cd (project directory)
source bin/activate
easy_install MySQL-python

Ce faisant, vous installerez MySQLdb dans le propre environnement virtuel de ce projet, qui sera séparé de l’installation à l’échelle du système. Virtualenv a pour avantage de vous permettre de conserver plusieurs versions de logiciels exactement où vous en avez besoin.

3
Ken Kinder