django.core.exceptions.ImproperlyConfigured: Błąd podczas ładowania modułu MySQLdb: Brak modułu o nazwie MySQLdb

96

Problem, z którym mam do czynienia podczas próby połączenia się z bazą danych dla mysql. Podałem również ustawienia bazy danych, których użyłem.

 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

Ustawienia bazy danych ::

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.
    }
}

Wielkie dzięki za pomoc !!

zaczynajmy
źródło

Odpowiedzi:

136

Wygląda na to, że nie masz zainstalowanego pakietu python mysql, spróbuj:

pip install mysql-python

lub jeśli nie korzystasz ze środowiska wirtualnego (na hostach * nix):

sudo pip install mysql-python
Ron E.
źródło
Czy korzystasz ze środowiska wirtualnego? Radzę zrobić to tylko po to, aby wszystko było zorganizowane. Jeśli to nie jest opcja, musisz uruchomić pip z uprawnieniami superużytkownika: sudo pip install mysql-python
Ron E
2
Używam wirtualnego env i zainstalowałem mysql, django ... jednak kiedy robię python manage.py syncdb Daje mi ten sam błąd, który opublikowałem
getitstarted
czy mam przypadkiem problem z wersją? Używam django 1.5, python 2.7.3 z moim sql (14.14 dla
debiana
4
z pythonem 3 to: pip install mysqlclient
sadalsuud
1
To w python3 nie działa. wymaga ConfigParser, który nie jest dostępny w python3
gogagubi
40

musisz zainstalować python-mysqldb - interfejs Pythona do MySQL

Próbować
sudo apt-get install python-mysqldb

Rashi
źródło
38

Jeśli otrzymujesz błędy podczas próby instalacji mysqlclient za pomocą pip, możesz nie mieć biblioteki mysql dev. Zainstaluj go, uruchamiając:

apt-get install libmysqlclient-dev

i spróbuj ponownie zainstalować mysqlclient:

pip install mysqlclient
Psddp
źródło
2
To było pip install mysqlclient. Zapomniałem dodać to do mojego pliku Requirements.txt, więc mimo że baza danych MySQL była tam i była zapełniona, mój serwer WWW Django nie mógł z nią współdziałać.
Blairg23
dzięki, ta odpowiedź uratowała mi dzień Od 2 dni próbuję zmusić mysql do pracy z django :)
rishabhr0y
13

Moja odpowiedź jest podobna do @ Ron-E, ale mam jeszcze kilka błędów / poprawek, więc poniżej umieszczam kroki dla Mac OSX na Mavericks i Pythonie 2.7.6.

  1. Zainstaluj pakiet Python mysql (jeśli otrzymasz komunikat o powodzeniu, zignoruj ​​poniższe kroki)

    pip install mysql-python
    
  2. Kiedy wykonałem powyższe, otrzymałem błąd „EnvironmentError: mysql_config not found” wprowadź opis obrazu tutaj Aby to naprawić, wykonałem poniższe czynności w terminalu:

    export PATH=$PATH:/usr/local/mysql/bin
    
  3. Po ponownym wykonaniu kroku 1 pojawia się nowy błąd „błąd: polecenie„ cc ”nie powiodło się ze stanem wyjścia 1” wprowadź opis obrazu tutaj Aby to naprawić, wykonałem poniższe czynności w terminalu:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
    
  4. Ponownie wykonałem krok 1 i otrzymałem komunikat „Pomyślnie zainstalowano mysql-python”!

Będzie
źródło
Dzięki za sugestię. Pierwszy z twoich problemów.
user2772346
Podążałem twoją drogą, ale w moim przypadku zawsze pojawia się pierwszy błąd. A dla `export CFLAGS = -Qunused-arguments` terminal podaje ten błąd:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy,
12

Kiedy konfigurowałem środowisko deweloperskie Django dla PyCharm w Mac OS X Mountain Lion z aplikacją python, mysql, sequel pro, otrzymałem błąd identyczny jak właściciel tego wątku. Jednak moja odpowiedź dla tych, którzy uruchamiają python-mysqldb pod Mac OS Mountain Lion x86_x64 (MySql i Python również powinny mieć tę samą architekturę) i już wypróbowali wszystko, jak pip itp. Aby naprawić ten problem, wykonaj następujące czynności:

  1. Pobierz MySql for Python z stąd
  2. Usunąć pobrany plik. W oknie terminala wykonaj następujące czynności: tar xvfz downloade.tar.
  3. cd / do nieobsługiwanego katalogu
  4. Uruchom instalację sudo python setup.py
  5. Jeśli pojawi się błąd podobny do tego: „Błąd środowiska: / usr / local / bin / mysql_config nie znaleziono”, spróbuj dodać następującą ścieżkę: „export PATH = $ PATH: / usr / local / mysql / bin”. Ale id mi nie pomogło i znalazłem inne rozwiązanie. Pod koniec wykonania polecenia wyjście błędu wygląda następująco:

    Plik „/path_to_file/MySQL-python-1.2.4b4/setup_posix.py”, wiersz 25, w mysql_config podnieś błąd EnvironmentError („% s not found”% (mysql_config.path,))

  6. Otwórz plik setup_posix.py z vimem i przejdź do linii 25 (w twoim przypadku może być inaczej, chyba że jest to ta sama wersja).

  7. Linia 25 powinna wyglądać tak po twojej edycji, chyba że twój mysql ma link symboliczny, taki jak następujący '/ usr / local / mysql / bin /':

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

  8. Po tym pojawił się kolejny błąd:

    django.core.exceptions.ImproperlyConfigured: Błąd podczas ładowania modułu MySQLdb: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : Biblioteka nie została załadowana: libmysqlclient.18.dylib Odniesienie z: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Przyczyna: nie znaleziono obrazu

  9. W końcu zrobiłem w konsoli:

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

Obecnie wszystko działa dobrze. Mam więc nadzieję, że będzie to pomocne dla kogoś, kto używa Maca. :)

Khamidulla
źródło
Wielkie dzięki. Prawie tydzień zajęło mi uruchomienie mojego pierwszego projektu przy użyciu mysql haha. Uff ...
Avigit
Wielkie dzięki! uratowałeś mi dzień! Używałem Maca i mam ten sam problem.
user2772346
7

Brakuje mysqldbbiblioteki Python . Użyj tego polecenia (dla Debian / Ubuntu), aby go zainstalować: sudo apt-get install python-mysqldb

Haimei
źródło
To jest odpowiedź, ale myślę, że byłoby wspaniale, gdybyś mógł dodać więcej szczegółów niż jedną linię. Dzięki!
Uli Köhler
Powyższe polecenie pomaga nam zainstalować interfejs Pythona do bazy danych MySQL.
Haimei,
7

Dzieje się tak, ponieważ nie znalazł złącza sql. próbować:

pip install mysqlclient
Anand Prakash
źródło
5

Mam rozwiązać ten problem w tym środowisku:

$ 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,
        },
    }
}

Jeśli używasz 'ENGINE': 'mysql.connector.django', zainstaluj sterownik wykonujący:

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

Zauważ, że $ pip install mysql-pythonto nie zadziałało dla mnie.

Zauważ, że jeśli używasz 'ENGINE': 'django.db.backends.mysql', powinieneś zainstalować sterownik wykonujący:
$ pip install mysqlclient

Na koniec wykonaj:
$ python manage.py migrate

Jeśli wszystko w porządku, python tworzy bazę danych wszystkich tych tabel:

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
JavierFuentes
źródło
django.core.exceptions.ImproperlyConfigured: „django.db.backends.django” nie jest dostępnym zapleczem bazy danych. Spróbuj użyć „django.db.backends.XXX”, gdzie XXX jest jednym z: „mysql”, „oracle”, „postgresql”, „sqlite3” Użyłem „ENGINE”: „mysql.connector.django” z pip3 install mysql -connector-python Nadal nie działało
mountainLion
4

Dla wersji Ubuntu 16.04 i 18.04 lub Python 3

sudo apt-get install python3-mysqldb
Gowthaman D
źródło
4

Jeśli używasz pyhton w wersji 3.4 lub nowszej. musisz zainstalować

sudo apt-get install python3-dev libmysqlclient-dev 

w terminalu. następnie zainstaluj pip install mysqlclientna wirtualnym środowisku env lub tam, gdzie zainstalowałeś pip.

selvakumar
źródło
3

W Ubuntu zaleca się korzystanie z repozytorium dystrybucji.

sudo apt-get install python-mysqldb
Gaurav Agarwal
źródło
2

Z tym samym komunikatem o błędzie, co Will, zadziałało, że najpierw zainstalowałem mysql, ponieważ brakujący plik zostanie dodany podczas instalacji. Więc później

brew install mysql

pip install mysql-python

działał bez błędów.

cmdAmir
źródło
Polecenie "/ usr / bin / python -u -c" import setuptools, tokenize; __ file __ = '/ private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python / setup.py'; f = getattr (tokenize, 'open', open) ( file ); code = f.read (). replace ('\ r \ n', '\ n'); f.close (); exec (compile (code, file , 'exec')) "install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt --single-version-externally-managed --compile" nie powiodło się z powodu błędu code 1 in / private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi
2

Tak też się stało ze mną i uważam, że stało się to częstym błędem nie tylko dla programistów Django, ale także dla Flaska, więc sposobem, w jaki rozwiązałem ten problem, było użycie brew.

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

W ten sposób każdy problem został rozwiązany, a oba frameworki działają absolutnie dobrze.

PS: Dla tych, którzy używają macportów (takich jak ja), może to stanowić problem, ponieważ napar działa na innym poziomie, radzę używać naparu zamiast macportu

Mam nadzieję, że mógłbym być pomocny.

pykimera
źródło
1

Miałem ten sam problem, który rozwiązał mój problem

Uruchom pip install pymysql w swojej powłoce

Następnie edytuj plik init.py w katalogu źródłowym projektu (tak samo jak settings.py), a następnie

Dodaj:

import pymysql

pymysql.install_as_MySQLdb ()

to powinno rozwiązać problem.

Vaishnav Raja
źródło
„Następnie edytuj plik init.py w katalogu źródłowym projektu” - masz na myśli __init__.py?
Alex Yu,
1

próbować:

pip install mysqlclient

Polecam używać go w środowisku wirtualnym.

Omid Estaji
źródło
0

Aby dodać do innych odpowiedzi, jeśli używasz Django, zaleca się zainstalowanie mysql-python PRZED instalacją Django.

Anoyz
źródło
0

Zmarnowałem na to dużo czasu. Okazuje się, że domyślna biblioteka bazy danych nie jest obsługiwana w Pythonie 3. Musisz użyć innej .

CoderGuy123
źródło
0

jeśli błąd wygląda tak

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

więc spróbuj :

pip install python-mysqldb
blueChair
źródło
0

W obliczu podobnego problemu. Próbowałem zainstalować mysql-pythonza pomocą pip, ale nie powiodło się z powodu błędów zależności gcc.

Rozwiązanie, które zadziałało dla mnie

conda install mysql-python

Proszę zauważyć, że mam już zainstalowaną anacondę, która nie miała zależności od gcc.

Ayush Vatsyayan
źródło
czy mógłbyś to rozwinąć
Ayush Vatsyayan,
0

Myślę, że to błąd wersji.

spróbuj zainstalować to w następującej kolejności:

  1. sudo apt-get install python3-mysqldb

  2. pip3 install mysqlclient

  3. python3 manage.py makemigrations

  4. python3 manage.py migrate

Suvidh Jain
źródło
-2

Wygląda na to, że nie masz uprawnień do folderu Python. Próbowaćsudo chown -R $USER /Library/Python/2.7

omkar ghule
źródło
-3

Może możesz wypróbować następujący tryb działania:
sudo python manage.py runserver 0.0.0.0:8000

yanlong xu
źródło