web-dev-qa-db-fra.com

ImportError: Aucun module nommé MySQLdb

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é tous les moyens possibles pour installer python mysql, celui mentionné dans le tutoriel, easy_install, Sudo apt-get install.

J'ai installé mysql dans mon env virtuel. La structure de mes répertoires est identique à celle expliquée dans le didacticiel. Le module est installé avec succès dans mon système et je reçois toujours cette erreur.

S'il vous plaît aider. Qu'est-ce qui peut causer cela.

83
user3182194

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

Simplement pip install pymysql et changez votre URI SQLAlchemy pour démarrer comme suit:

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

Il existe certains autres pilotes vous pouvez également essayer.

185
DazWorrall

Ou essayez ceci: 

apt-get install python-mysqldb
85
Edward van Kuik

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 venais d'installer MySQL-python, mais le problème existait toujours. Donc, je pense que si ce problème se produisait, vous devriez également prendre en compte mysql-devel . J'espère que cela vous aidera.

16
Adventurist

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'erreur "No module named MySQLdb" lorsque la commande ci-dessus a été exécutée. Pour résoudre ce problème, j'ai installé le module mysql-python et le problème a été résolu.

Sudo pip install mysql-python
13
Waseem Akram Malik

peux tu essayer

pip install mysqlclient
12
Doni

Cela dépend aussi de la version Python de mon expérience.

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

Cependant, si vous utilisez Python 2, vous devriez

Sudo pip install mysql-python

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

7
seokhoonlee

J'ai donc passé environ 5 heures à essayer de comprendre comment traiter ce problème lorsque j'essayais 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 à cette question. 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 (de 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 la plus confortable que je pouvais prendre.

4
Flibertyjibbet

Bien que le réponse de @Edward van Kuik _ soit correct, il ne prend pas en compte un problème avec virtualenv v1.7 et supérieur .

En particulier, installer python-mysqldb via apt sur Ubuntu le place sous /usr/lib/pythonX.Y/dist-packages, mais ce chemin n’est pas inclus par défaut dans le sys.path de virtualenv.

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

3
Chen Levy
yum install MySQL-python.x86_64

a travaillé pour moi.

0
hamed

Vous avez tellement d'erreurs liées aux autorisations et ce qui ne l'est pas. Vous pouvez essayer ceci: 

xcode-select --install
0