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?

usuario3182194
fuente
¿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.

DazWorrall
fuente
¿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
Edward van Kuik
fuente
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
Doni
fuente
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.

Aventurero
fuente
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
Waseem Akram Malik
fuente
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.

seokhoonlee
fuente
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.

Flibertyjibbet
fuente
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
3

Mientras @Edward van Kuik 's respuesta es correcta, que no toma en cuenta un problema con virtualenv v1.7 y superior .

En particular, la instalación a python-mysqldbtravés aptde Ubuntu lo coloca bajo /usr/lib/pythonX.Y/dist-packages, pero esta ruta no se incluye de forma predeterminada en los virtualenv sys.path.

Entonces, para resolver esto , debe crear su virtualenv con paquetes del sistema ejecutando algo como:

virtualenv --system-site-packages .venv

Chen Levy
fuente
0

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

xcode-select --install
chandan kharbanda
fuente
0
yum install MySQL-python.x86_64

trabajó para mi.

hamed
fuente
0

En ubuntu 20, puedes probar esto:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
DachuanZhao
fuente