I'm using Django 1.4.1 with Active Python 2.7 on Win7. I have installed the MySQL module using pypm install mysql-python
.
The database engine is django.db.backends.mysql
.
import MySQLdb
works in the interactive shell.
.\manage.py syncdb
created the tables with no problem.
However, when I open the site in the browser, I get 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
The settings for the sessions and messages apps are:
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
MESSAGE_STORAGE = "django.contrib.messages.storage.cookie.CookieStorage"
How is this possible?
The problem was that MySQLdb was installed in my home directory
C:\Users\alexei\AppData\Roaming\Python\Python27\site-packages\
which was not in Python's path. So I uninstalled it withpypm uninstall mysql-python
and then reinstalled it globally usingpypm -g install mysql-python
(note the-g
option).The alternative is to add that path to the list
sys.path.append("...path...")
inwsgi.py
So, in case someone else is wondering, you can find out where MySQLdb (or any other module) is installed like so:
Make sure that that path is in Python's path list provided in Django's error message.
i also faced this issue then i installed python mysql to my system
then its workes see this --> working in my system >>
$ python manage.py syncdb;
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
.............working
I configured djando w/ mysql the following way:
1) set
DJANGO_SETTINGS_MODULE
environment variable in .bashrc and source it2) change settings.py pointed by this env_var and local_settings.py (if any) like this (for mysql):
3) install mysql dev libraries and header files, ensure that mysql is on PATH
4) install python package for mysql
5) test django's access to your mysql db:
or
6) sync django to mysql from dir with your django app
Easiest way is to install MySQLdb from binary: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
If you are using and virtual environment. you must run
Don't forget positioning inside of your virtual env. /bin PATH, to use local pip. REGARDS!