ImportError: aucun module nommé MySQLdb

124

Je fais référence au tutoriel suivant pour créer une page de connexion pour mon application Web. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

J'ai un problème avec la base de données. Je reçois un

ImportError: No module named MySQLdb

quand j'exécute

http://127.0.0.1:5000/testdb

J'ai essayé toutes les manières possibles d'installer python mysql, celui mentionné dans le tutoriel, easy_install, sudo apt-get install.

J'ai installé mysql dans mon environnement virtuel. Ma structure de répertoires est exactement la même que celle expliquée dans le tutoriel. Le module est correctement installé dans mon système et j'obtiens toujours cette erreur.

Veuillez aider. Qu'est-ce qui peut causer cela.

user3182194
la source
Vous avez installé MySQL mais avez-vous installé le package MySQLdb pour Python?
Ffisegydd
J'ai utilisé sudo apt-get install mysql-python. Quand j'ai utilisé pip, j'ai eu une erreur d'environnement pour mysql_config
user3182194
mysql est installé dans mon environnement virtuel et fonctionne correctement et mysqldb a également été installé.
user3182194

Réponses:

277

Si vous rencontrez des problèmes pour compiler l'extension binaire, ou sur une plate-forme où vous ne pouvez pas, vous pouvez essayer d'utiliser les PyMySQLliaisons python pures .

Simplement pip install pymysqlet changez votre URI SQLAlchemy pour commencer comme ceci:

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

Il y a quelques autres pilotes , vous pouvez aussi essayer.

DazWorrall
la source
Ai-je oublié quelque chose? Pourquoi n'est-ce pas répertorié ici? Plus précisément, ce nom de dialecte: docs.sqlalchemy.org/en/latest/core/engines.html . C'était exactement ce que j'avais mal, merci.
CashIsClay
Notez que l'URI de la base de données dépend quelque peu du connecteur que vous utilisez :)
Braden Holt
cela n'a pas fonctionné avec python2.7. * pour moi. utilisation de pip install MySQL-pythontravaillé.
Rahul Goyal
1
celui-ci a beaucoup aidé lors de la recherche d'une solution pour les erreurs flask-sqlalchemy. J'ai rencontré: 1. Erreur lors de l'exécution de l'application WSGI ModuleNotFoundError: Aucun module nommé 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'SSL connection error: SSL_CTX_set_tmp_dh failed') (Contexte de cette erreur à: sqlalche.me/e/e3q8 ) merci beaucoup et j'espère que d'autres trouveront cette solution avec cette description d'erreur plus rapidement que je l'ai fait!
ben
Travaillé sur CentOS, semble être la réponse la plus indépendante du système d'exploitation. Merci!
trpt4him
94

Ou essayez ceci:

apt-get install python-mysqldb
Edward van Kuik
la source
9
Je pense que la réponse à la question est la suivante
codersofthedark
1
python-mysqldb a des dépendances comme la bibliothèque VC ++ et ne fonctionne parfois pas sur un système d'exploitation 64 bits
Nima Soroush
1
Cela a fonctionné pour moi aussi. Ubuntu 16.04 avec python 2.7
genepool99
Pour les personnes dont cette réponse n'a pas résolu leur problème, cela peut être dû à un problème virtualenv, voir: stackoverflow.com/a/43984484
Chen Levy
Plus précisément:sudo apt-get install python-mysqldb
Tina J
25

peux-tu essayer

pip install mysqlclient
Doni
la source
2
Fonctionne pour moi sur python 3.7.3
nsssayom
1
Merci pour le partage, cela fonctionnait lorsque j'utilisais Windows, mais j'ai eu des problèmes avec mysqlclient( OSError: mysql_config not found) lorsque j'essayais d'exécuter la même application sur Ubuntu, la réponse acceptée l'a résolu.
Bilal
Fonctionne sur OSX avec anaconda et python 3.7.6
Saaru Lindestøkke
16

Mon problème est:

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

et ma résolution:

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

au tout début, je viens d'installer MySQL-python, mais le problème existait toujours. Donc, je pense que si ce problème se produit, vous devriez également prendre en compte mysql-devel. J'espère que cela t'aides.

Aventuriste
la source
2
pip install MySQL-pythonouais, c'est le ticket
Kirby
Cela dépend des bibliothèques Microsoft Visual C ++ dans les environnements Windows
Erizo
15

J'ai eu ce problème lorsque je travaillais sur SQLAlchemy. Le dialecte par défaut utilisé par SQLAlchemy pour MySQL est mysql+mysqldb.

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

J'ai eu l' No module named MySQLdberreur " " lorsque la commande ci-dessus a été exécutée. Pour le réparer, j'ai installé le mysql-pythonmodule et le problème a été résolu.

sudo pip install mysql-python
Waseem Akram Malik
la source
3
avant d'installer mysql-python, vous devez toujours installer mysql ou quelque chose contenant la commande msyql_config.
mxi1
8

Cela dépend également de la version Python d'après mon expérience.

Si vous utilisez Python 3, la réponse @DazWorrall a bien fonctionné pour moi.

Cependant, si vous utilisez Python 2, vous devez

sudo pip install mysql-python

qui installerait le module 'MySQLdb' sans avoir à changer l'URI SQLAlchemy.

seokhoonlee
la source
2
Si quelqu'un est ici et obtient une erreur d'environnement: mysql_config n'a pas été trouvé, alors sudo apt-get install libmysqlclient-dev peut vous aider. Réponse originale: stackoverflow.com/a/5178698/2190689
ssi-anik
Si vous obtenez une erreur de type parseur de configuration, vous pouvez regarder ceci. stackoverflow.com/a/23978968/2190689
ssi-anik
7

J'ai donc passé environ 5 heures à essayer de comprendre comment résoudre ce problème en essayant de courir

./manage.py makemigrations

Avec Ubuntu Server LTS 16.1, une pile LAMP complète, Apache2 MySql 5.7 PHP 7 Python 3 et Django 1.10.2, j'ai vraiment eu du mal à trouver une bonne réponse à cela. En fait, je ne suis toujours pas satisfait, mais la SEULE solution qui a fonctionné pour moi est la suivante ...

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

suivi de (depuis l'intérieur de l'environnement virtuel)

pip install mysqlclient

Je n'aime vraiment pas avoir à utiliser des installations de développement lorsque j'essaie de configurer un nouveau serveur Web, mais malheureusement, cette configuration était le seul chemin le plus confortable que je pouvais emprunter.

Flibertyjibbet
la source
Si vous n'avez pas de packages '-dev' et de compilateur, vous ne pouvez pas installer de module Python qui a un composant d'extension C qui doit être compilé. Votre seule option serait d'utiliser une boîte de construction distincte contenant les bits supplémentaires et de créer des fichiers de roue Python. Copiez ensuite les roues sur votre système cible et installez les packages à partir de roues à la place.
Graham Dumpleton
3

Alors que @Edward van Kuik de réponse est correcte, il ne prend pas en compte un problème avec virtualenv v1.7 et ci - dessus .

En particulier, installer python-mysqldbvia aptsur Ubuntu le mettre sous /usr/lib/pythonX.Y/dist-packages, mais ce chemin n'est pas inclus par défaut dans les virtualenv sys.path.

Donc, pour résoudre ce problème , vous devez créer votre virtualenv avec des packages système en exécutant quelque chose comme:

virtualenv --system-site-packages .venv

Chen Levy
la source
0

Vous avez tellement d'erreurs liées aux autorisations et autres. Vous pouvez essayer ceci:

xcode-select --install
Chandan Kharbanda
la source
0
yum install MySQL-python.x86_64

travaillé pour moi.

haché
la source
0

Dans ubuntu 20, vous pouvez essayer ceci:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
DachuanZhao
la source