ImportError: ningún módulo llamado MySQLdb


124

Me refiero al siguiente tutorial para crear una página de inicio de sesión para mi aplicación web. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

Tengo problemas con la base de datos. Estoy recibiendo un

ImportError: No module named MySQLdb

cuando ejecuto

http://127.0.0.1:5000/testdb

He intentado todas las formas posibles de instalar python mysql, la que se menciona en el tutorial, easy_install, sudo apt-get install.

He instalado mysql en mi entorno virtual. La estructura de mi directorio es la misma que se explica en el tutorial. El módulo se instaló correctamente en mi sistema y todavía recibo este error.

Por favor ayuda. ¿Qué podría estar causando esto?


¿Ha instalado MySQL pero ha instalado el paquete MySQLdb para Python?
Ffisegydd

Usé sudo apt-get install mysql-python. Cuando solía pip i ha obtenido un error Medio Ambiente para mysql_config
user3182194

mysql está instalado en mi entorno virtual y funciona correctamente, y también se ha instalado mysqldb.
user3182194

Respuestas:


277

Si tiene problemas para compilar la extensión binaria, o en una plataforma donde no puede, puede intentar usar los PyMySQLenlaces de Python puro .

Simplemente pip install pymysqly cambie su URI de SQLAlchemy para comenzar así:

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

Hay algunos otros controladores que también puede probar.


¿Me he perdido algo? ¿Por qué no aparece aquí? Específicamente ese nombre de dialecto: docs.sqlalchemy.org/en/latest/core/engines.html . Sin embargo, esto era exactamente lo que tenía mal, gracias.
CashIsClay

Tenga en cuenta que el db uri depende un poco del conector que utilice :)
Braden Holt

esto no funcionó con python2.7. * para mí. uso de pip install MySQL-pythontrabajado.
Rahul Goyal

1
este ayudó mucho mientras buscaba una solución para los errores de flask-sqlalchemy. Me enfrenté a: 1. Error al ejecutar la aplicación WSGI ModuleNotFoundError: Ningún módulo llamado 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'Error de conexión SSL: SSL_CTX_set_tmp_dh falló') (Antecedentes de este error en: sqlalche.me/e/e3q8 ) muchas gracias y espero que otros encuentren esta solución con estas descripciones de error más rápido que yo.
ben

Trabajado en CentOS, parece ser la respuesta más no dependiente del sistema operativo. ¡Gracias!
trpt4him

94

O prueba esto:

apt-get install python-mysqldb

9
Creo que la respuesta a la pregunta es la siguiente
codificadores de la oscuridad

1
python-mysqldb tiene algunas dependencias como la biblioteca VC ++ y a veces no funciona en sistemas operativos de 64 bits
Nima Soroush

1
Esto funcionó para mí también. Ubuntu 16.04 con python 2.7
genepool99

Para aquellas personas que esta respuesta no resolvió su problema, esto podría deberse a un problema virtualenv, consulte: stackoverflow.com/a/43984484
Chen Levy

Más exactamente:sudo apt-get install python-mysqldb
Tina J

25

puedes intentar

pip install mysqlclient

2
Funciona para mí en Python 3.7.3
nsssayom

1
Gracias por compartir, funcionó cuando estaba usando Windows pero tuve algunos problemas con mysqlclient( OSError: mysql_config not found) cuando intentaba ejecutar la misma aplicación en Ubuntu, la respuesta aceptada lo resolvió.
Bilal

Funciona en OSX con anaconda y python 3.7.6
Saaru Lindestøkke

16

Mi problema es:

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

y mi resolución:

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

Al principio, acabo de instalar MySQL-python, pero el problema aún existía. Así que creo que si sucediera este problema, también debería tener en cuenta mysql-devel. Espero que esto ayude.


2
pip install MySQL-pythonsí, ese es el boleto
Kirby

Esto depende de las bibliotecas de Microsoft Visual C ++ en entornos Windows
Erizo

15

Tuve este problema cuando estaba trabajando en SQLAlchemy. El dialecto predeterminado utilizado por SQLAlchemy para MySQL es mysql+mysqldb.

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

Recibí el No module named MySQLdberror " " cuando se ejecutó el comando anterior. Para solucionarlo, instalé el mysql-pythonmódulo y se solucionó el problema.

sudo pip install mysql-python

3
antes de instalar mysql-python, aún necesita instalar mysql o algo que contenga el comando msyql_config.
mxi1

8

Depende de la versión de Python también en mi experiencia.

Si está utilizando Python 3, la respuesta de @DazWorrall funcionó bien para mí.

Sin embargo, si está utilizando Python 2, debería

sudo pip install mysql-python

que instalaría el módulo 'MySQLdb' sin tener que cambiar el URI de SQLAlchemy.


2
Si alguien está aquí abajo y recibe un error de entorno: mysql_config not found, entonces sudo apt-get install libmysqlclient-dev puede ayudarlo. Respuesta original: stackoverflow.com/a/5178698/2190689
ssi-anik

Si obtiene el tipo de error del analizador de configuración, entonces puede mirar esto. stackoverflow.com/a/23978968/2190689
ssi-anik

7

Así que pasé aproximadamente 5 horas tratando de averiguar cómo lidiar con este problema al intentar ejecutar

./manage.py makemigrations

Con Ubuntu Server LTS 16.1, una pila LAMP completa, Apache2 MySql 5.7 PHP 7 Python 3 y Django 1.10.2, realmente tuve problemas para encontrar una buena respuesta a esto. De hecho, todavía no estoy satisfecho, pero la ÚNICA solución que funcionó para mí es esta ...

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

seguido de (desde el interior del entorno virtual)

pip install mysqlclient

Realmente no me gusta tener que usar dev installs cuando intento configurar un nuevo servidor web, pero desafortunadamente esta configuración fue la única ruta en su mayoría cómoda que pude tomar.


Si no tiene paquetes '-dev' y un compilador, no puede instalar ningún módulo de Python que tenga un componente de extensión C que deba compilarse. Su única opción sería usar una caja de compilación separada que tenga los bits adicionales y compile archivos de rueda de Python. Luego, copie las ruedas en su sistema de destino e instale los paquetes de ruedas en su lugar.
Graham Dumpleton


0

Tengo tantos errores relacionados con los permisos y demás. Quizás quieras probar esto:

xcode-select --install

0
yum install MySQL-python.x86_64

trabajó para mi.


0

En ubuntu 20, puedes probar esto:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.