django - Ошибка загрузки модуля MySQLdb: модуль с именем MySQLdb отсутствует

Я использую Django 1.4.1 с Active Python 2.7 на Win7. Я установил модуль MySQL, используя.pypm install mysql-python

База данных движок есть.django.db.backends.mysql

import MySQLdb работает в интерактивной оболочке.

.\manage.py syncdb создали таблицы без проблем.

Однако, когда я открываю сайт в браузере, я получаю: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

Настройки для сеансов и приложений сообщений:

SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
MESSAGE_STORAGE = "django.contrib.messages.storage.cookie.CookieStorage"

Как это возможно?

 Nathan Villaescusa07 окт. 2012 г., 22:46
Если вы установили MySQLdb без перезапуска вашего веб-сервера, это, вероятно, непока не поднял.
 Alexei07 окт. 2012 г., 23:15
Ах, теперь я понимаю, что я ненеправильно прочитал ваш комментарий. Я'Я использую Apache с mod_wsgi, а не сервер dev, поставляемый с Django. Модуль MySQLdb был установлен несколько дней назад, так чтоэто проблема.
 Alexei07 окт. 2012 г., 22:52
У меня есть скрипт, который проверяет изменения и автоматически перезапускает сервер. Но не берите в голову, я нашел проблему и отправлю ответ.

Ответы на вопрос(5)

1 комплектDJANGO_SETTINGS_MODULE переменная окружения в .bashrc и ее источник

2) измените settings.py, на который указывают env_var и local_settings.py (если есть), вот так (для 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) установите библиотеки mysql dev и заголовочные файлы, убедитесь, что mysql находится в PATH

sudo apt-get install libmysqlclient-dev

4) установить пакет Python для MySQL

sudo pip install MySQL-python

5) тест джангоДоступ к вашей базе данных MySQL:

python manage.py dbshell

или же

django-admin dbshell

6) синхронизировать django с mysql из dir с вашим приложением django

python manage.py syncdb

то я установил Python MySQL в моей системе

pip install mysql-python

тогда его работывидеть это -> работает в моей системе >>

$ python manage.py syncdb;


Создание таблиц ...

Создание таблицы django_admin_log

Создание таблицы auth_permission

Создание таблицы auth_group_permissions

Создание таблицы auth_group

.............за работой

Если вы используете и виртуальную среду. ты должен бежать

cd virtualEnvPath
pip install MySQL-Python

Дон»забыть о позиционировании в вашей виртуальной среде. / bin PATH, чтобы использовать локальный пункт. С УВАЖЕНИЕМ!

 user782801 сент. 2014 г., 07:08
Если вы получаете что-то похожее на: для пакета MySQL-Python, то sh: mysql_config: команда не найдена. Тогда вам не хватает: yum install python-devel mysql-devel ----> для CENTOS

что MySQLdb был установлен в моем домашнем каталогеC:\Users\alexei\AppData\Roaming\Python\Python27\site-packages\ который не был в Python 'с пути. Поэтому я удалил его сpypm uninstall mysql-python а затем переустановил егоглобально с помощьюpypm -g install mysql-python (Обратите внимание-g опция).

Альтернативой является добавление этого пути в список.sys.path.append("...path...") вwsgi.py

Так что, если кому-то интересно, вы можете узнать, где установлен MySQLdb (или любой другой модуль), вот так:

import MySQLdb
print MySQLdb.__file__

Убедитесь, что этот путь находится в PythonСписок путей, представленных в Django 'сообщение об ошибке

Ваш ответ на вопрос