django.core.exceptions.ImproperlyConfigured: Помилка завантаження модуля MySQLdb: Немає модуля з іменем MySQLdb


94

Проблема, з якою я стикаюся при спробі підключитися до бази даних для mysql. Я також дав налаштування бази даних, якими я користувався.

 Traceback (most recent call last):
 File "manage.py", line 10, in <module>
 execute_from_command_line(sys.argv)
 File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/home/arundhati/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/sql.py", line 9, in <module>
from django.db import models
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 27, in load_backend
return import_module('.base', backend_name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Налаштування Databse ::

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ar_test_db',                      # Or path to database file if using 
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or   '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

Велике спасибі за допомогу !!

Відповіді:


136

Схоже, у вас не встановлений пакет python mysql, спробуйте:

pip install mysql-python

або якщо не використовується віртуальне середовище (на * nix хостах):

sudo pip install mysql-python

Ви використовуєте віртуальне середовище? Я рекомендую вам робити це лише для того, щоб все організувати. Якщо це не варіант, то вам потрібно буде запустити pip з привілеями суперкористувача: sudo pip install mysql-python
Ron E

2
Я використовую віртуальну env, і я встановив mysql, django ... однак, коли я роблю python manage.py syncdb, це видає мені ту саму помилку, яку я опублікував
getitstarted

чи є у мене проблема з версією випадково? Я використовую django 1.5, python 2.7.3 зі своїм sql (14.14 для debian)
getitstarted 10.03.13

4
з python 3 є: pip встановити mysqlclient
sadalsuud

1
Це в python3 не працює. потрібен ConfigParser, який недоступний у python3
gogagubi,

40

вам потрібно встановити python-mysqldb - інтерфейс Python для MySQL

Спробуйте
sudo apt-get install python-mysqldb


38

Якщо у вас виникають помилки при спробі встановити mysqlclient за допомогою pip, вам може не вистачити бібліотеки mysql dev. Встановіть його, запустивши:

apt-get install libmysqlclient-dev

і повторіть спробу встановити mysqlclient:

pip install mysqlclient

2
Це було pip install mysqlclient. Я забув додати це до мого файлу requirements.txt, тому, хоча база даних MySQL була там і заповнена, мій веб-сервер Django не міг з нею взаємодіяти.
Blairg23,

дякую, ця відповідь врятувала мій день, я намагався змусити MySQL працювати з django протягом 2 днів :)
rishabhr0y

13

Моя відповідь подібна до @ Ron-E, але я отримав ще кілька помилок / виправлень, тому я розміщую свої кроки нижче для Mac OSX на Mavericks та Python 2.7.6.

  1. Встановіть пакет Python mysql (якщо ви отримаєте повідомлення про успіх, проігноруйте наведені нижче дії)

    pip install mysql-python
  2. Коли я зробив вищезазначене, я отримав помилку "EnvironmentError: mysql_config not found" введіть тут опис зображення Щоб виправити це, я зробив нижче в терміналі:

    export PATH=$PATH:/usr/local/mysql/bin
  3. Коли я повторюю крок 1, я отримую нову помилку "помилка: помилка команди" cc "із статусом виходу 1" введіть тут опис зображення Щоб виправити це, я зробив нижче в терміналі:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
  4. Я повторив крок 1 і отримав повідомлення про успіх "Успішно встановлено mysql-python"!


Дякую за пропозицію. Я отримав першу вашу проблему.
user2772346

Я пішов вашим шляхом, але перша помилка завжди трапляється в моєму випадку. А для терміналу `export CFLAGS = -Qunused-аргументи` видається така помилка:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy

12

Коли я налаштував середовище розробки Django для PyCharm в Mac OS X Mountain Lion за допомогою програми python, mysql, sequel pro, я отримав помилку та ж, що і власник цього потоку. Однак моя відповідь для них, хто запускає python-mysqldb під Mac OS Mountain Lion x86_x64 (MySql та Python також повинні бути однаковою архітектурою), і вже спробували все, як pip та ін. Щоб вирішити цю проблему, виконайте наступні дії:

  1. Завантажте MySql для Python звідси
  2. Скасувати завантажений файл. У вікні терміналу зробіть наступне: tar xvfz downloade.tar.
  3. cd / до нетатованого каталогу
  4. Запустіть sudo python setup.py install
  5. Якщо ви отримуєте помилку приблизно так: "Помилка середовища: / usr / local / bin / mysql_config не знайдено", спробуйте додати шлях до дупки наступним чином: "export PATH = $ PATH: / usr / local / mysql / bin". Але ідентифікатор мені не допоміг, і я знайшов інше рішення. У кінці виводу помилки виконання команди, яка виглядає так:

    Файл "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py", рядок 25, у mysql_config raise EnvironmentError ("% s не знайдено"% (mysql_config.path,))

  6. Відкрийте setup_posix.py за допомогою vim і перейдіть до рядка 25 (у вашому випадку це може бути інакше, якщо це не та сама версія).

  7. Рядок 25 повинен виглядати так після редагування, якщо у вашому mysql немає символічного посилання, як показано нижче '/ usr / local / mysql / bin /':

    f = popen("%s --%s" % ('/usr/local/mysql/bin/mysql_config', what))

  8. Після цього я отримав ще одну помилку наступним чином:

    django.core.exceptions.ImproperlyConfigured: Помилка завантаження модуля MySQLdb: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : Бібліотека не завантажена: libmysqlclient.18.dylib Посилання з: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Причина: зображення не знайдено

  9. Нарешті, я зробив наступне в консолі:

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

На даний момент все працює нормально. Тож я сподіваюся, це буде корисно для тих, хто використовує Mac. :)


Дуже дякую. Мені знадобився майже тиждень, щоб запустити свій перший проект за допомогою mysql ха-ха. Фу ...
Авігіт

Дякую тонна людина! ти врятував мій день! я використовував mac і отримував ту ж проблему.
user2772346

7

Вам бракує mysqldbбібліотеки python . Використовуйте цю команду (для Debian / Ubuntu), щоб встановити її: sudo apt-get install python-mysqldb


Це відповідь, але я думаю, було б чудово, якби ви могли додати більше деталей, ніж один рядок. Дякую!
Uli Köhler

Вищенаведена команда допоможе нам встановити інтерфейс Python до бази даних MySQL.
Haimei




4

Якщо ви використовуєте pyhton версії 3.4 або новішої. вам доведеться встановити

sudo apt-get install python3-dev libmysqlclient-dev 

в терміналі. потім встановіть pip install mysqlclientу віртуальному середовищі або там, де встановили pip.


4

Я вирішив цю проблему в такому середовищі:

$ pyenv --version
pyenv 1.2.9

$ python --version
Python 3.7.2

$ python -m django --version
2.1.7

./settings.py

DATABASES = {
    'default': {
        'NAME': 'my_db_name',
        'ENGINE': 'mysql.connector.django',   # 'django.db.backends.mysql'
        'USER': '<user>',
        'PASSWORD': '<pass>',
        'HOST': 'localhost',
        'PORT': 3306,
        'OPTIONS': {
            'autocommit': True,
        },
    }
}

Якщо ви використовуєте 'ENGINE': 'mysql.connector.django', встановіть драйвер, що виконує:

$ pip install mysql-connector-python
Successfully installed mysql-connector-python-8.0.15 protobuf-3.7.0 six-1.12.0

Зауважте, що $ pip install mysql-pythonу мене це не спрацювало.

Зверніть увагу, що якщо ви використовуєте 'ENGINE': 'django.db.backends.mysql', вам слід встановити драйвер, що виконує:
$ pip install mysqlclient

Нарешті виконайте:
$ python manage.py migrate

Якщо все в порядку, python створює всі ці бази даних таблиць id:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session


2

З тим самим повідомленням про помилку, що і Уілл, мені вдалося спочатку встановити mysql, оскільки відсутній файл буде доданий під час інсталяції. Тож після

brew install mysql

pip install mysql-python

працював без помилок.


Команда "/ usr / bin / python -u -c" імпортує налаштування інструментів, токенізує; __ файл __ = '/ private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python / setup.py'; f = getattr (tokenize, 'open', open) ( файл ); code = f.read (). replace ('\ r \ n', '\ n'); f.close (); exec (compile (code, файл , 'exec')) "не вдалося встановити --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt - Single-version-externally-managed --compile" код 1 у / private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
тисячі

2

Це сталося і зі мною, і я вважаю, що це стало поширеною помилкою не лише для розробників Django, але й для Flask, тому спосіб вирішення цієї проблеми був за допомогою brew.

  1. brew install mysql
  2. sudo pip install mysql-python

Таким чином було вирішено кожну окрему проблему, і обидва фреймворки працюють абсолютно нормально.

PS: Для тих, хто використовує макпорт (наприклад, я), це може бути проблемою, оскільки пиво працює на іншому рівні, моя порада - використовувати пиво замість макпорт

Сподіваюся, я міг би бути корисним.


1

У мене була та сама проблема. Наступне вирішило мою проблему

Запустіть pip install pymysql у свою оболонку

Потім відредагуйте файл init.py у каталозі джерела проекту (те саме, що і settings.py), а потім

додати:

імпортувати pysysql

pymysql.install_as_MySQLdb ()

це має вирішити проблему.


"Тоді відредагуйте файл init.py у каталозі джерела вашого проекту" - ви маєте на увазі __init__.py?
Alex Yu

1

спробуйте:

pip install mysqlclient

Рекомендую використовувати його у віртуальному середовищі.


0

Щоб додати інші відповіді, якщо ви використовуєте Django, бажано встановити mysql-python ДО встановлення Django.



0

якщо помилка виглядає так

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module:
dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: 
/usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so

тоді спробуйте:

pip install python-mysqldb

0

Зіткнувся з подібною проблемою. Я спробував встановити mysql-pythonза допомогою pip, але це не вдалося через помилки залежності від gcc.

Рішення, яке працювало для мене

conda install mysql-python

Зверніть увагу, що мені вже встановили анаконду, яка не мала залежності від gcc.


не могли б ви детальніше це
пояснити

-2

Здається, у вас немає дозволу на папку Python. Спробуйтеsudo chown -R $USER /Library/Python/2.7


-3

Можливо, ви можете спробувати такий режим роботи:
sudo python manage.py runserver 0.0.0.0:8000

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.