web-dev-qa-db-fra.com

Erreur lors du chargement du module MySQLdb 'Avez-vous installé mysqlclient ou MySQL-python?'

J'utilise la ligne de commande Windows 10 pour un projet Django utilisant python34; toutefois, je rencontre des difficultés avec SQL. 

J'ai déjà installé mysqlclient avec pip install mysqlclient==1.3.5 et localisé le fichier pour m'assurer que je n'étais pas délirant. J'ai ensuite exécuté python manage.py migrate pour migrer les tables vers la base de données SQL (j'utilise phpmyadmin). Cependant, lorsque la commande est revenue avec ...

 File "C:\Users\user\env\lib\site-packages\Django\db\backends\mysql\base.py", line 30, in <module>
    'Did you install mysqlclient or MySQL-python?' % e
Django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?

Je suis conscient que de telles questions existent déjà, mais aucune solution ne semble avoir eu d'impact sur les tentatives. Merci d'avance.

18
PrimeBenefiter
pip install pymysql

Ensuite, éditez le fichier __init__.py dans votre projet.

ajouter:

import pymysql

pymysql.install_as_MySQLdb()
75
aforwardz

Utilisez la commande ci-dessous pour résoudre votre problème.

pip install mysql-python
apt-get install python3-mysqldb libmysqlclient-dev python-dev

Fonctionne sur Debian

7
user2317231

Même problème après la migration vers python 3. Apparemment, MySQL-python est incompatible, donc selon le fonctionnaire Django docs , installé mysqlclient using pip install mysqlclient sur Mac. Notez que certains problèmes spécifiques au système d'exploitation sont mentionnés dans la documentation. 

Citant de docs :

Conditions préalables

Vous devrez peut-être installer les en-têtes et les bibliothèques de développement Python et MySQL comme suit:

Sudo apt-get install python-dev default-libmysqlclient-dev # Debian/Ubuntu

Sudo yum install python-devel mysql-devel # Red Hat/CentOS

brew install mysql-connector-c # macOS (Homebrew) (actuellement, il a un bug. Voir ci-dessous)

Sous Windows, il existe des roues binaires que vous pouvez installer sans MySQLConnector/C ou MSVC.

Note sur Python 3: si vous utilisez python3, vous devez installer python3-dev en utilisant la commande suivante:

Sudo apt-get install python3-dev # debian/Ubuntu

Sudo yum install python3-devel # Red Hat/CentOS

Note sur le bogue de MySQL Connector/C sur macOS

Voir aussi: https://bugs.mysql.com/bug.php?id=86971

Les versions de MySQL Connector/C peuvent avoir des options de configuration par défaut incorrectes qui entraînent des erreurs de compilation lorsque mysqlclient-python est installé. (Depuis novembre 2017, c'est connu pour les mysql-connector-c et les paquets officiels de homebrew)

La modification de mysql_config résout ces problèmes comme suit.

Changement

# on macOS, on or about line 112:
# Create options
libs="-L$pkglibdir"
libs="$libs -l "

à

# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"

Une configuration SSL incorrecte peut également créer des problèmes. voir, par exemple, brew info openssl pour plus de détails sur macOS.

Installer depuis PyPI

pip install mysqlclient

REMARQUE: Wheels for Windows peut ne pas être publié avec le paquet source. Vous devez épingler la version dans votre requirements.txt pour éviter d’essayer d’installer le dernier paquet source.

Installer depuis la source

  1. Télécharger le code source par git clone ou zipfile .
  2. Personnaliser site.cfg
  3. python setup.py install
4
Aniket Sinha

J'ai eu ce problème tout récemment, même avec l'utilisation de la bibliothèque mysqlclient compatible python 3, et j'ai réussi à résoudre mon problème, bien que d'une manière peu orthodoxe. Si vous utilisez MySQL 8, essayez ceci et voyez si cela aide! :)

J'ai simplement fait une copie du fichier libmysqlclient.21.dylib situé dans mon installation à jour de MySQL 8.0.13, qui se trouvait dans /usr/local/mysql/lib, et je l'ai déplacée sous le même nom vers /usr/lib.

Cependant, vous devrez désactiver temporairement la protection de l'intégrité de la sécurité sur votre Mac, car vous ne pourrez ni ne pourrez modifier les autorisations sur rien dans /usr/lib sans le désactiver. Vous pouvez le faire en démarrant dans le système de récupération, en cliquant sur Utilitaires dans le menu situé en haut, en ouvrant le terminal et en entrant csrutil disable dans le terminal. N'oubliez pas de réactiver la protection de l'intégrité de la sécurité lorsque vous avez terminé! La seule différence avec le processus ci-dessus sera que vous exécuterez csrutil enable à la place.

Vous pouvez en savoir plus sur la façon de désactiver et d'activer la protection de l'intégrité de sécurité de macOS ici .

0
Xoadra