Estoy usando Django 1.4.1 con Active Python 2.7 en Win7. He instalado el módulo MySQL usando pypm install mysql-python
.
El motor de la base de datos es django.db.backends.mysql
.
import MySQLdb
funciona en la shell interactiva.
.\manage.py syncdb
creó las tablas sin ningún problema.
Sin embargo, cuando abro el sitio en el navegador, me Error loading MySQLdb module: No module named MySQLdb
un 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 6. from django.contrib.sessions.backends.db import SessionStore as DBStore File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\db.py" in 3. from django.db import IntegrityError, transaction, router File "C:\Python27\lib\site-packages\django\db\__init__.py" in 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 16. raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) Exception Type: ImproperlyConfigured at / Exception Value: Error loading MySQLdb module: No module named MySQLdb
Los ajustes para las aplicaciones de sesiones y mensajes son:
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db" MESSAGE_STORAGE = "django.contrib.messages.storage.cookie.CookieStorage"
¿Cómo es esto posible?
El problema fue que MySQLdb se instaló en mi directorio de inicio C:\Users\alexei\AppData\Roaming\Python\Python27\site-packages\
que no estaba en la ruta de Python. Así que lo desinstalé con pypm uninstall mysql-python
y luego lo reinstalé globalmente usando pypm -g install mysql-python
(note la opción -g
).
La alternativa es agregar esa ruta a la lista sys.path.append("...path...")
en wsgi.py
Entonces, en caso de que alguien más se esté preguntando, puede averiguar dónde está instalado MySQLdb (o cualquier otro módulo) así:
import MySQLdb print MySQLdb.__file__
Asegúrese de que esa ruta esté en la lista de rutas de Python que figura en el mensaje de error de Django.
Si está utilizando y entorno virtual. debes correr
cd virtualEnvPath pip install MySQL-Python
No olvides posicionar dentro de tu env virtual. / bin PATH, para usar pip local. ¡SALUDOS!
También me enfrenté a este problema, entonces instalé Python mysql en mi sistema
pip instalar mysql-python
entonces sus trabajos ven esto -> trabajando en mi sistema >>
$ python manage.py syncdb;
Creando tablas …
Creando la tabla django_admin_log
Creando la tabla auth_permission
Creando la tabla auth_group_permissions
Creando la tabla auth_group
………….trabajando
La forma más sencilla es instalar MySQLdb desde binario: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
Configuré djando w / mysql de la siguiente manera:
1) establece la variable de entorno DJANGO_SETTINGS_MODULE
en .bashrc y la fuente
2) cambiar settings.py señalado por este env_var y local_settings.py (si existe) de esta manera (para mysql):
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DB_NAME', 'USER': 'DB_USER', 'PASSWORD': 'DB_PASSWORD', 'HOST': 'localhost', # Or an IP Address that your DB is hosted on 'PORT': '3306', } }
3) instale las bibliotecas y los archivos de cabecera de mysql dev, asegúrese de que mysql esté en PATH
sudo apt-get install libmysqlclient-dev
4) instala el paquete python para mysql
sudo pip install MySQL-python
5) prueba el acceso de django a tu db mysql:
python manage.py dbshell
o
django-admin dbshell
6) sincronice django a mysql desde dir con su aplicación django
python manage.py syncdb