django.core.exceptions.ImproperlyConfigured: Fehler beim Laden des MySQLdb-Moduls: Kein Modul mit dem Namen MySQLdb

93

Das Problem, mit dem ich beim Versuch, eine Verbindung zur Datenbank für MySQL herzustellen, konfrontiert bin. Ich habe auch die Datenbankeinstellungen angegeben, die ich verwendet habe.

 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

Datenbankeinstellungen ::

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

Vielen Dank für die Hilfe !!

loslegen
quelle

Antworten:

136

Es sieht so aus, als ob Sie das Python-MySQL-Paket nicht installiert haben. Versuchen Sie Folgendes:

pip install mysql-python

oder wenn Sie keine virtuelle Umgebung verwenden (auf * nix-Hosts):

sudo pip install mysql-python
Ron E.
quelle
Verwenden Sie eine virtuelle Umgebung? Ich empfehle Ihnen, nur um die Dinge zu organisieren. Wenn dies keine Option ist, müssen Sie pip mit Superuser-Berechtigungen ausführen: sudo pip install mysql-python
Ron E
2
Ich benutze virtuelle Umgebung, und ich habe MySQL, Django ... installiert, aber wenn ich Python Manage.py Syncdb mache Es gibt mir den gleichen Fehler, den ich gepostet habe
getitstarted
Habe ich zufällig ein Versionsproblem? Ich benutze Django 1.5, Python 2.7.3 mit meinem SQL (14.14 für Debian)
getitstarted
4
mit Python 3 ist: pip install mysqlclient
sadalsuud
1
Dies funktioniert in Python3 nicht. erfordert ConfigParser, der in python3
gogagubi
40

Sie müssen die Python-mysqldb - Python-Schnittstelle zu MySQL installieren

Versuchen
sudo apt-get install python-mysqldb

Raschi
quelle
38

Wenn beim Versuch, mysqlclient mit pip zu installieren, Fehler auftreten, fehlt möglicherweise die mysql dev-Bibliothek. Installieren Sie es, indem Sie Folgendes ausführen:

apt-get install libmysqlclient-dev

und versuchen Sie erneut, mysqlclient zu installieren:

pip install mysqlclient
Psddp
quelle
2
Es war pip install mysqlclient. Ich hatte vergessen, dies zu meiner Datei "require.txt" hinzuzufügen. Obwohl die MySQL-Datenbank vorhanden und gefüllt war, konnte mein Django-Webserver nicht damit interagieren.
Blairg23
danke diese antwort rettete meinen tag ich habe versucht, mysql mit django für 2 tage arbeiten zu lassen :)
rishabhr0y
13

Meine Antwort ist ähnlich wie bei @ Ron-E, aber ich habe noch ein paar Fehler / Korrekturen erhalten, daher setze ich meine Schritte unten für Mac OSX unter Mavericks und Python 2.7.6.

  1. Installieren Sie das Python-MySQL-Paket (wenn Sie eine Erfolgsmeldung erhalten, ignorieren Sie die folgenden Schritte).

    pip install mysql-python
  2. Als ich das oben genannte tat, bekam ich den Fehler "EnvironmentError: mysql_config nicht gefunden". Geben Sie hier die Bildbeschreibung ein Um dies zu beheben, habe ich das Folgende im Terminal gemacht:

    export PATH=$PATH:/usr/local/mysql/bin
  3. Wenn ich Schritt 1 erneut durchführe, wird der neue Fehler "Fehler: Befehl 'cc' mit Exit-Status 1 fehlgeschlagen" angezeigt. Geben Sie hier die Bildbeschreibung ein Um dies zu beheben, habe ich im Terminal Folgendes ausgeführt:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
  4. Ich habe Schritt 1 erneut ausgeführt und die Erfolgsmeldung "MySQL-Python erfolgreich installiert" erhalten!

Wille
quelle
Danke für den Vorschlag. Ich habe zuerst Ihr Problem.
user2772346
Ich bin Ihrem Weg gefolgt, aber in meinem Fall tritt immer der erste Fehler auf. Und für "Export CFLAGS = -Qunused-Argumente" gibt das Terminal diesen Fehler aus:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy
12

Als ich die Django-Entwicklungsumgebung für PyCharm unter Mac OS X Mountain Lion mit Python, MySQL und Sequel Pro-Anwendung einrichtete, wurde der gleiche Fehler wie beim Eigentümer dieses Threads angezeigt. Meine Antwort für diejenigen, die python-mysqldb unter Mac OS Mountain Lion x86_x64 ausführen (MySql und Python sollten ebenfalls dieselbe Architektur haben) und bereits alles wie pip usw. ausprobiert haben. Um dieses Problem zu beheben, gehen Sie folgendermaßen vor:

  1. Laden Sie MySql für Python hier herunter
  2. Untar heruntergeladene Datei. Gehen Sie im Terminalfenster wie folgt vor: tar xvfz downloade.tar.
  3. cd / to untared Verzeichnis
  4. Führen Sie die Installation von sudo python setup.py aus
  5. Wenn Sie eine Fehlermeldung wie die folgende erhalten: "Umgebungsfehler: / usr / local / bin / mysql_config nicht gefunden", versuchen Sie, den Pfad ass wie folgt hinzuzufügen: "export PATH = $ PATH: / usr / local / mysql / bin". Aber id hat mir nicht geholfen und ich habe eine andere Lösung gefunden. Am Ende der Befehlsausführung wird eine Fehlerausgabe ausgegeben, die folgendermaßen aussieht:

    Datei "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py", Zeile 25, in mysql_config erhöhen EnvironmentError ("% s nicht gefunden"% (mysql_config.path,))

  6. Öffnen Sie setup_posix.py mit vim und gehen Sie zu Zeile 25 (In Ihrem Fall kann es anders sein, es sei denn, es ist dieselbe Version).

  7. Zeile 25 sollte nach Ihrer Bearbeitung so aussehen, es sei denn, Ihre MySQL hat einen symbolischen Link wie folgt: '/ usr / local / mysql / bin /':

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

  8. Danach bekam ich einen weiteren Fehler wie folgt:

    django.core.exceptions.ImproperlyConfigured: Fehler beim Laden des MySQLdb-Moduls: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : Bibliothek nicht geladen: libmysqlclient.18.dylib Referenziert von: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Grund: Bild nicht gefunden

  9. Schließlich habe ich in der Konsole folgendes gemacht:

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

Derzeit funktioniert alles gut. Ich hoffe, es ist hilfreich für jemanden, der einen Mac verwendet. :) :)

Khamidulla
quelle
Vielen Dank. Ich habe fast eine Woche gebraucht, um mein erstes Projekt mit MySQL zu starten, haha. Puh ...
Avigit
Vielen Dank Mann! du hast meinen Tag gerettet! Ich benutzte Mac und bekam das gleiche Problem.
user2772346
7

Ihnen fehlt die Python- mysqldbBibliothek. Verwenden Sie diesen Befehl (für Debian / Ubuntu), um es zu installieren: sudo apt-get install python-mysqldb

Haimei
quelle
Dies ist eine Antwort, aber ich denke, es wäre großartig, wenn Sie mehr Details als eine einzelne Zeile hinzufügen könnten. Vielen Dank!
Uli Köhler
Der obige Befehl hilft uns bei der Installation der Python-Schnittstelle in der MySQL-Datenbank.
Haimei
7

Dies liegt daran, dass der SQL-Connector nicht gefunden wurde. Versuchen:

pip install mysqlclient
Anand Prakash
quelle
4

Für Ubuntu 16.04 und 18.04 oder Python 3 Versionen

sudo apt-get install python3-mysqldb
Gowthaman D.
quelle
Vielen Dank. Es funktioniert für mich
seunggabi
3

Unter Ubuntu wird empfohlen, das Distributions-Repository zu verwenden.

sudo apt-get install python-mysqldb
Gaurav Agarwal
quelle
3

Wenn Sie Pyhton Version 3.4 oder höher verwenden. Sie müssen installieren

sudo apt-get install python3-dev libmysqlclient-dev 

im Terminal. Installieren pip install mysqlclientSie dann auf Ihrer virtuellen Umgebung oder dort, wo Sie pip installiert haben.

Selvakumar
quelle
3

Ich habe dieses Problem in dieser Umgebung gelöst :

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

Wenn Sie verwenden 'ENGINE': 'mysql.connector.django', installieren Sie den Treiber, der Folgendes ausführt:

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

Beachten Sie, dass $ pip install mysql-pythondas bei mir nicht funktioniert hat.

Beachten Sie 'ENGINE': 'django.db.backends.mysql', dass Sie bei Verwendung den Treiber installieren sollten, der Folgendes ausführt:
$ pip install mysqlclient

Zum Schluss ausführen:
$ python manage.py migrate

Wenn alles in Ordnung ist, erstellt Python alle diese Tabellen-ID-Datenbanken:

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
quelle
2

Mit der gleichen Fehlermeldung wie Will hat es bei mir funktioniert, zuerst MySQL zu installieren, da die fehlende Datei während der Installation hinzugefügt wird. So danach

brew install mysql

pip install mysql-python

lief ohne Fehler.

cmdAmir
quelle
Befehl "/ 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) ( Datei ); code = f.read (). replace ('\ r \ n', '\ n'); f.close (); exec (compile (code, Datei , 'exec')) "install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt --single-version-extern-verwaltete --compile" schlug mit Fehler fehl Code 1 in / private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi
2

Dies geschah auch bei mir und ich glaube, dass dies nicht nur für Django-Entwickler, sondern auch für Flask ein häufiger Fehler geworden ist. Daher habe ich dieses Problem mit Brew gelöst.

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

Auf diese Weise wurde jedes einzelne Problem gelöst und beide Frameworks funktionieren absolut einwandfrei.

PS: Für diejenigen, die Macports verwenden (wie ich selbst), kann dies ein Problem sein, da das Brauen auf einer anderen Ebene funktioniert. Mein Rat ist, das Brauen anstelle von Macports zu verwenden

Ich hoffe ich konnte hilfreich sein.

Pykimera
quelle
1

Ich hatte das gleiche Problem. Das Folgende löste mein Problem

Führen Sie pip install pymysql aus in Ihrer Shell aus

Bearbeiten Sie dann die Datei init.py in Ihrem Projektursprungsverzeichnis (wie settings.py) und dann

hinzufügen:

importiere pymysql

pymysql.install_as_MySQLdb ()

Dies sollte das Problem lösen.

Vaishnav Raja
quelle
"Dann bearbeiten Sie die Datei init.py in Ihrem Projektursprungverzeichnis" - meinen Sie __init__.py?
Alex Yu
1

Versuchen:

pip install mysqlclient

Ich empfehle es in einer virtuellen Umgebung zu verwenden.

Omid Estaji
quelle
0

Wenn Sie Django verwenden, ist es ratsam, mysql-python zu installieren, bevor Sie Django installieren.

Anoyz
quelle
0

Ich habe viel Zeit damit verschwendet. Es stellt sich heraus, dass die Standarddatenbankbibliothek für Python 3 nicht unterstützt wird. Sie müssen eine andere verwenden .

CoderGuy123
quelle
0

wenn der Fehler so aussieht

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

dann versuche es :

pip install python-mysqldb
blueChair
quelle
0

Ähnliches Problem. Ich habe versucht, mysql-pythonmit pip zu installieren , aber es ist aufgrund von gcc-Abhängigkeitsfehlern fehlgeschlagen.

Die Lösung, die für mich funktioniert hat

conda install mysql-python

Bitte beachten Sie, dass ich bereits eine Anaconda installiert hatte, die keine gcc-Abhängigkeit hatte.

Ayush Vatsyayan
quelle
Könnten Sie es
näher
-2

Sie haben anscheinend keine Berechtigung für den Python-Ordner. Versuchensudo chown -R $USER /Library/Python/2.7

Omkar Ghule
quelle
-3

Vielleicht können Sie die folgende Betriebsart ausprobieren:
sudo python manage.py runserver 0.0.0.0:8000

yanlong xu
quelle