ImportError: nessun modulo denominato MySQLdb


124

Mi riferisco al seguente tutorial per creare una pagina di accesso per la mia applicazione web. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

Ho problemi con il database. Sto ottenendo un

ImportError: No module named MySQLdb

quando eseguo

http://127.0.0.1:5000/testdb

Ho provato tutti i modi possibili per installare python mysql, quello menzionato nel tutorial, easy_install, sudo apt-get install.

Ho installato mysql nel mio ambiente virtuale. La struttura della mia directory è la stessa di quella spiegata nel tutorial. Il modulo è stato installato con successo nel mio sistema e ancora ricevo questo errore.

Per favore aiuto. Che cosa potrebbe causare questo.


Hai installato MySQL ma hai installato il pacchetto MySQLdb per Python?
Ffisegydd

Ho usato sudo apt-get install mysql-python. Quando ho usato pip ho ricevuto un errore di ambiente per mysql_config
user3182194

mysql è installato nel mio ambiente virtuale e funziona correttamente ed è stato installato anche mysqldb.
user3182194

Risposte:


277

Se hai problemi con la compilazione dell'estensione binaria o su una piattaforma su cui non puoi, puoi provare a utilizzare i PyMySQLcollegamenti puri di Python .

Semplicemente pip install pymysqle cambia il tuo URI SQLAlchemy per iniziare in questo modo:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://.....'

Ci sono altri driver che potresti provare.


Ho dimenticato qualcosa? Perché non è elencato qui? Nello specifico quel nome dialettale: docs.sqlalchemy.org/en/latest/core/engines.html . Questo era esattamente quello che avevo sbagliato però, grazie.
CashIsClay

Nota che l'uri db dipende in qualche modo dal connettore che usi :)
Braden Holt

questo non ha funzionato con python2.7. * per me. uso del pip install MySQL-pythonlavorato.
Rahul Goyal

1
questo è stato di grande aiuto durante la ricerca di una soluzione per gli errori di flask-sqlalchemy. Ho riscontrato: 1. Errore durante l'esecuzione dell'applicazione WSGI ModuleNotFoundError: Nessun modulo denominato "MySQLdb" 2. (_mysql_exceptions.OperationalError) (2006, "Errore di connessione SSL: SSL_CTX_set_tmp_dh non riuscito") (Informazioni generali su questo errore su: sqlalche.me/e/e3q8 ) grazie mille e spero che altri trovino questa soluzione con queste descrizioni degli errori più velocemente come ho fatto io!
ben

Lavorato su CentOS, sembra essere la risposta più non dipendente dal sistema operativo. Grazie!
trpt4him

94

Oppure prova questo:

apt-get install python-mysqldb

9
Penso che la risposta alla domanda sia questa
codersofthedark

1
python-mysqldb ha alcune dipendenze come la libreria VC ++ e talvolta non funziona su OS a 64 bit
Nima Soroush

1
Questo ha funzionato anche per me. Ubuntu 16.04 con python 2.7
genepool99

Per coloro che questa risposta non ha risolto il problema, ciò potrebbe essere dovuto a un problema di virtualenv, vedere: stackoverflow.com/a/43984484
Chen Levy

Più precisamente:sudo apt-get install python-mysqldb
Tina J

25

puoi provare

pip install mysqlclient

2
Funziona per me su Python 3.7.3
nsssayom

1
Grazie per la condivisione, ha funzionato quando stavo usando Windows ma ho avuto alcuni problemi con mysqlclient( OSError: mysql_config not found) quando stavo cercando di eseguire la stessa app su Ubuntu, la risposta accettata lo ha risolto.
Bilal

Funziona su OSX con anaconda e python 3.7.6
Saaru Lindestøkke il

16

Il mio problema è:

return __import__('MySQLdb')
ImportError: No module named MySQLdb

e la mia risoluzione:

pip install MySQL-python
yum install mysql-devel.x86_64

all'inizio, ho appena installato MySQL-python, ma il problema esisteva ancora. Quindi penso che se questo problema si verifica, dovresti anche prendere in considerazione mysql-devel. Spero che questo ti aiuti.


2
pip install MySQL-pythonsì, questo è il biglietto
Kirby

Dipende dalle librerie Microsoft Visual C ++ in ambienti Windows
Erizo

15

Ho riscontrato questo problema quando stavo lavorando su SQLAlchemy. Il dialetto predefinito utilizzato da SQLAlchemy per MySQL è mysql+mysqldb.

engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')

Ho ricevuto l' No module named MySQLdberrore " " quando è stato eseguito il comando precedente. Per risolverlo ho installato il mysql-pythonmodulo e il problema è stato risolto.

sudo pip install mysql-python

3
prima di installare mysql-python, è comunque necessario installare mysql o qualcosa che contenga il comando msyql_config.
mxi1

8

Dipende anche dalla versione di Python nella mia esperienza.

Se stai usando Python 3, la risposta di @DazWorrall ha funzionato bene per me.

Tuttavia, se stai usando Python 2, dovresti

sudo pip install mysql-python

che installerebbe il modulo "MySQLdb" senza dover modificare l'URI di SQLAlchemy.


2
Se qualcuno è quaggiù e riceve un errore di ambiente: mysql_config non è stato trovato un po ', allora sudo apt-get install libmysqlclient-dev può aiutarti. Risposta originale: stackoverflow.com/a/5178698/2190689
SSI-anik

Se ottieni il tipo di errore del parser di configurazione, potresti guardare questo. stackoverflow.com/a/23978968/2190689
SSI-anik

7

Quindi ho passato circa 5 ore cercando di capire come affrontare questo problema quando ho provato a correre

./manage.py makemigrations

Con Ubuntu Server LTS 16.1, uno stack LAMP completo, Apache2 MySql 5.7 PHP 7 Python 3 e Django 1.10.2 ho davvero faticato a trovare una buona risposta a questo. In effetti, non sono ancora soddisfatto, ma l'UNICA soluzione che ha funzionato per me è questa ...

sudo apt-get install build-essential python-dev libapache2-mod-wsgi-py3 libmysqlclient-dev

seguito da (dall'interno dell'ambiente virtuale)

pip install mysqlclient

Non mi piace davvero dover utilizzare le installazioni di sviluppo quando provo a configurare un nuovo server web, ma sfortunatamente questa configurazione era l'unico percorso più comodo che potevo prendere.


Se non hai pacchetti "-dev" e un compilatore, non puoi installare alcun modulo Python che abbia un componente di estensione C che deve essere compilato. La tua unica opzione sarebbe quella di utilizzare una casella di compilazione separata che ha i bit extra e creare file di ruote Python. Quindi copia le ruote sul tuo sistema di destinazione e installa invece i pacchetti dalle ruote.
Graham Dumpleton


0

Hai così tanti errori relativi alle autorizzazioni e cosa no. Potresti provare questo:

xcode-select --install

0
yum install MySQL-python.x86_64

ha funzionato per me.


0

In Ubuntu 20, puoi provare questo:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
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.