django - Erreur lors du chargement du module MySQLdb: Pas de module MySQLdb
Je suis en utilisant Django 1.4.1 Active avec Python 2.7 sur Win7. J'ai installé le module MySQL à l'aide de pypm install mysql-python
.
Le moteur de base de données est django.db.backends.mysql
.
import MySQLdb
travaille dans le shell interactif.
.\manage.py syncdb
créé les tables, pas de problème.
Cependant, quand j'ouvre le site dans le navigateur, j'obtiens Error loading MySQLdb module: No module named MySQLdb
:
Environment:
Request Method: GET
Request URL: http://whatever/
Django Version: 1.4.1
Python Version: 2.7.2
Installed Applications:
('django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
89. response = middleware_method(request)
File "C:\Python27\lib\site-packages\django\contrib\sessions\middleware.py" in process_request
10. engine = import_module(settings.SESSION_ENGINE)
File "C:\Python27\lib\site-packages\django\utils\importlib.py" in import_module
35. __import__(name)
File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\cached_db.py" in <module>
6. from django.contrib.sessions.backends.db import SessionStore as DBStore
File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\db.py" in <module>
3. from django.db import IntegrityError, transaction, router
File "C:\Python27\lib\site-packages\django\db\__init__.py" in <module>
40. backend = load_backend(connection.settings_dict['ENGINE'])
File "C:\Python27\lib\site-packages\django\db\__init__.py" in __getattr__
34. return getattr(connections[DEFAULT_DB_ALIAS], item)
File "C:\Python27\lib\site-packages\django\db\utils.py" in __getitem__
92. backend = load_backend(db['ENGINE'])
File "C:\Python27\lib\site-packages\django\db\utils.py" in load_backend
24. return import_module('.base', backend_name)
File "C:\Python27\lib\site-packages\django\utils\importlib.py" in import_module
35. __import__(name)
File "C:\Python27\lib\site-packages\django\db\backends\mysql\base.py" in <module>
16. raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
Exception Type: ImproperlyConfigured at /
Exception Value: Error loading MySQLdb module: No module named MySQLdb
Les paramètres pour les sessions et les messages d'applications sont:
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
MESSAGE_STORAGE = "django.contrib.messages.storage.cookie.CookieStorage"
Comment est-ce possible?
Si vous avez installé MySQLdb sans redémarrer votre serveur web, il n'a probablement pas été ramassé encore.
J'ai un script qui vérifie les modifications d'une redémarre le serveur automatiquement. Mais jamais l'esprit, j'ai trouvé le problème et publierons une réponse.
Ah, maintenant je me rends compte que je n'avais pas lu votre commentaire correctement. Je suis à l'aide d'Apache avec mod_wsgi, pas le serveur de dev qui vient avec Django. Le module MySQLdb a été installé il y a jours donc ce n'était pas un problème.
J'ai un script qui vérifie les modifications d'une redémarre le serveur automatiquement. Mais jamais l'esprit, j'ai trouvé le problème et publierons une réponse.
Ah, maintenant je me rends compte que je n'avais pas lu votre commentaire correctement. Je suis à l'aide d'Apache avec mod_wsgi, pas le serveur de dev qui vient avec Django. Le module MySQLdb a été installé il y a jours donc ce n'était pas un problème.
OriginalL'auteur Alexei | 2012-10-07
Vous devez vous connecter pour publier un commentaire.
Le problème était que MySQLdb a été installé dans mon répertoire home
C:\Users\alexei\AppData\Roaming\Python\Python27\site-packages\
qui n'était pas en Python. J'ai donc désinstallé avecpypm uninstall mysql-python
puis réinstallé à l'échelle mondiale à l'aide depypm -g install mysql-python
(note de l'-g
option).L'alternative est d'ajouter ce chemin d'accès à la liste
sys.path.append("...path...")
danswsgi.py
Donc dans le cas où quelqu'un d'autre est de se demander, vous pouvez trouver où MySQLdb (ou n'importe quel autre module) est installé comme suit:
Assurez-vous que le chemin d'accès est en Python path liste fournie dans Django message d'erreur.
OriginalL'auteur Alexei
Si vous utilisez et de l'environnement virtuel. vous devez exécuter
N'oubliez pas de positionnement à l'intérieur de votre virtuel env. /bin CHEMIN d'accès, à l'utilisation locale pip.
Ce qui CONCERNE les!
OriginalL'auteur user7828
j'ai aussi été confronté à ce problème, puis j'ai installé python mysql pour mon système
puis son workes
voir ce -->
de travail dans mon système >>
$ python manage.py syncdb;
La création de tables ...
Création de la table django_admin_log
Création de la table auth_permission
Création de la table auth_group_permissions
Création de la table auth_group
.............travail
OriginalL'auteur errakeshpd
Plus simple est d'installer MySQLdb de binaire:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
OriginalL'auteur tomermes
J'ai configuré djando w/mysql la manière suivante:
1) définir
DJANGO_SETTINGS_MODULE
variable d'environnement .bashrc et de la source, il2) modifier settings.py pointé par ce env_var et local_settings.py (le cas échéant) comme ceci (pour mysql):
3) installer mysql dev bibliothèques et fichiers d'en-tête, de s'assurer que mysql est sur le CHEMIN d'accès
4) installer le paquet python for mysql
5) test de django reinhardt, l'accès à vos bases de données mysql:
ou
6) de synchronisation de django à mysql à partir de dir avec votre django app
OriginalL'auteur sdd