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.