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.
pip install pymysql
Ensuite, éditez le fichier __init__.py dans votre projet.
ajouter:
import pymysql
pymysql.install_as_MySQLdb()
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
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/CentOSNote 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 lesmysql-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
- Télécharger le code source par
git clone
ou zipfile .- Personnaliser
site.cfg
python setup.py install
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 .