django.core.exceptions.ImproperlyConfigured: errore durante il caricamento del modulo MySQLdb: nessun modulo denominato MySQLdb


94

Il problema che sto affrontando mentre provo a connettermi al database per mysql. Ho anche fornito le impostazioni del database che ho usato.

 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

Impostazioni database:

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

Grazie mille per l'aiuto !!

Risposte:


136

Sembra che tu non abbia installato il pacchetto mysql di python, prova:

pip install mysql-python

o se non si utilizza un ambiente virtuale (su host * nix):

sudo pip install mysql-python

Stai usando un ambiente virtuale? Ti consiglio di farlo solo per mantenere le cose organizzate. Se questa non è un'opzione, dovrai eseguire pip con i privilegi di superutente: sudo pip install mysql-python
Ron E

2
Sto usando virtual env e ho installato mysql, django ... tuttavia quando eseguo python manage.py syncdb mi dà lo stesso errore che ho pubblicato
getitstarted

ho un problema di versione per caso? Sto usando django 1.5, python 2.7.3 con il mio sql (14.14 per debian)
getitstarted

4
con python 3 è: pip install mysqlclient
sadalsuud

1
Questo in python3 non funziona. richiede ConfigParser che non è disponibile in python3
gogagubi

40

devi installare python-mysqldb - interfaccia Python a MySQL

Provare
sudo apt-get install python-mysqldb


38

Se si verificano errori durante l'installazione di mysqlclient con pip, potrebbe mancare la libreria mysql dev. Installalo eseguendo:

apt-get install libmysqlclient-dev

e riprova ad installare mysqlclient:

pip install mysqlclient

2
Lo è stato pip install mysqlclient. Mi ero dimenticato di aggiungerlo al mio file requirements.txt, quindi anche se il database MySQL era lì e popolato, il mio server web Django non poteva interagire con esso.
Blairg23

grazie questa risposta mi ha salvato la giornata, ho provato a far funzionare mysql con django per 2 giorni :)
rishabhr0y

13

La mia risposta è simile a @ Ron-E, ma ho ricevuto alcuni errori / correzioni in più, quindi sto inserendo i miei passaggi di seguito per Mac OSX su Mavericks e Python 2.7.6.

  1. Installa il pacchetto mysql di Python (se ricevi un messaggio di successo, ignora i passaggi seguenti)

    pip install mysql-python
  2. Quando ho fatto quanto sopra, ho ricevuto l'errore "EnvironmentError: mysql_config non trovato" inserisci qui la descrizione dell'immagine Per risolvere questo problema, ho fatto quanto segue nel terminale:

    export PATH=$PATH:/usr/local/mysql/bin
  3. Quando eseguo nuovamente il passaggio 1, viene visualizzato un nuovo errore "errore: comando" cc "non riuscito con stato di uscita 1" inserisci qui la descrizione dell'immagine Per risolvere il problema, ho eseguito le seguenti operazioni nel terminale:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
  4. Ho riesaminato il passaggio 1 e ho ricevuto il messaggio di successo "mysql-python installato con successo"!


Grazie per il suggerimento. Ho il tuo primo problema.
user2772346

Ho seguito la tua strada, ma nel mio caso si verifica sempre il primo errore. E per "export CFLAGS = -Qunused-arguments" il terminale dà -bash: export: =-Qunused-arguments': not a valid identifier
quell'errore

12

Quando ho configurato l'ambiente di sviluppo Django per PyCharm in Mac OS X Mountain Lion con l'applicazione python, mysql, sequel pro, ho ricevuto lo stesso errore del proprietario di questo thread. Tuttavia, la mia risposta per coloro che eseguono python-mysqldb su Mac OS Mountain Lion x86_x64 (anche MySql e Python dovrebbero essere la stessa architettura) e hanno già provato tutto come pip ed ecc. Per risolvere questo problema, eseguire i seguenti passaggi:

  1. Scarica MySql per Python da qui
  2. Untar file scaricato. Nella finestra del terminale fai quanto segue: tar xvfz downloade.tar.
  3. cd / nella directory non tarata
  4. Esegui sudo python setup.py install
  5. Se ottieni un errore simile a questo: "Errore ambiente: / usr / local / bin / mysql_config non trovato", prova ad aggiungere il percorso ass seguente: "export PATH = $ PATH: / usr / local / mysql / bin". Ma l'id non mi ha aiutato e ho trovato un'altra soluzione. Alla fine dell'output di errore di esecuzione del comando che assomiglia a questo:

    File "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py", riga 25, in mysql_config raise EnvironmentError ("% s non trovato"% (mysql_config.path,))

  6. Apri setup_posix.py con vim e vai alla riga 25 (nel tuo caso può essere diverso a meno che non sia la stessa versione).

  7. La riga 25 dovrebbe apparire così dopo la modifica a meno che il tuo mysql non abbia un link simbolico come segue '/ usr / local / mysql / bin /':

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

  8. Dopo questo ho ricevuto un altro errore come segue:

    django.core.exceptions.ImproperlyConfigured: errore durante il caricamento del modulo MySQLdb: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : Libreria non caricata: libmysqlclient.18.dylib Riferimento da: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Motivo: immagine non trovata

  9. Infine ho fatto quanto segue in console:

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

Attualmente funziona tutto bene. Quindi spero che sia utile per qualcuno che usa il Mac. :)


Molte grazie. Mi ci è voluta quasi una settimana solo per eseguire il mio primo progetto utilizzando mysql haha. Uff ...
Avigit

Grazie mille! mi hai salvato la giornata! stavo usando mac e ottenendo lo stesso problema.
user2772346

7

Ti manca la mysqldblibreria Python . Usa questo comando (per Debian / Ubuntu) per installarlo: sudo apt-get install python-mysqldb


Questa è una risposta, ma penso che sarebbe fantastico se potessi aggiungere più dettagli di una singola riga. Grazie!
Uli Köhler

Il comando sopra ci aiuta a installare l'interfaccia Python nel database MySQL.
Haimei

7

È perché non ha trovato il connettore sql. provare:

pip install mysqlclient


4

Per le versioni Ubuntu 16.04 e 18.04 o python 3

sudo apt-get install python3-mysqldb

4

Se stai usando pyhton versione 3.4 o successiva. devi installare

sudo apt-get install python3-dev libmysqlclient-dev 

nel terminale. quindi installa pip install mysqlclientsul tuo ambiente virtuale o dove hai installato pip.


4

Ho risolto questo problema in questo ambiente:

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

Se usi 'ENGINE': 'mysql.connector.django', installa il driver eseguendo:

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

Nota che $ pip install mysql-pythonnon ha funzionato per me.

Nota che se usi 'ENGINE': 'django.db.backends.mysql', dovresti installare il driver eseguendo:
$ pip install mysqlclient

Infine esegui:
$ python manage.py migrate

Se va bene, python crea tutti questi database di ID tabelle:

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

3

Su Ubuntu si consiglia di utilizzare il repository delle distribuzioni.

sudo apt-get install python-mysqldb

2

Con lo stesso messaggio di errore di Will, ha funzionato per me installare prima mysql poiché il file mancante verrà aggiunto durante l'installazione. Quindi dopo

brew install mysql

pip install mysql-python

ha funzionato senza errori.


Comando "/ 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" non riuscito con errore codice 1 in / private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi

2

Questo è successo anche a me e credo che questo sia diventato un errore comune non solo per gli sviluppatori Django ma anche per Flask, quindi il modo in cui ho risolto questo problema è stato usare brew.

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

In questo modo è stato risolto ogni singolo problema ed entrambi i framework funzionano perfettamente.

PS: Per coloro che usano macports (come me), questo può essere un problema poiché la birra funziona a un livello diverso, il mio consiglio è di usare brew invece di macports

Spero di esserti stato d'aiuto.


1

Avevo lo stesso problema. Di seguito è stato risolto il mio problema

Esegui pip install pymysql nella tua shell

Quindi, modifica il file init.py nella directory di origine del progetto (lo stesso di settings.py) e poi

Inserisci:

import pymysql

pymysql.install_as_MySQLdb ()

questo dovrebbe risolvere il problema.


"Quindi, modifica il file init.py nella directory di origine del progetto" - intendi __init__.py?
Alex Yu

1

provare:

pip install mysqlclient

Consiglio di usarlo in un ambiente virtuale.


0

Solo per aggiungere altre risposte, se stai usando Django, è consigliabile installare mysql-python PRIMA di installare Django.



0

se l'errore è simile a questo

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

quindi prova:

pip install python-mysqldb

0

Problema simile affrontato. Ho provato a installaremysql-python utilizzando pip, ma non è riuscito a causa di errori di dipendenza da gcc.

La soluzione che ha funzionato per me

conda install mysql-python

Tieni presente che avevo già installato anaconda, che non aveva dipendenza da gcc.


potresti approfondirlo
Ayush Vatsyayan

-2

Sembra che tu non abbia l'autorizzazione per la cartella Python. Provaresudo chown -R $USER /Library/Python/2.7


-3

Forse puoi provare la seguente modalità di funzionamento:
sudo python manage.py runserver 0.0.0.0:8000

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.