web-dev-qa-db-fra.com

Django - erreur d'installation de mysqlclient: mysqlclient 1.3.13 ou plus récent est requis; vous avez 0.9.3

J'ai parcouru les forums mais je ne trouve pas de réponse ni même de documentation à ce sujet.

Lors de l'exécution de la commande:

python manage.py inspectdb

J'obtiens le erreur:

mysqlclient 1.3.13 or newer is required; you have 0.9.3

J'ai essayé toutes les corrections suggérées, notamment: -mise à niveau pip -installation d'une roue différente (32 bits au lieu de 64), à savoir mysqlclient-1.4.2-cp37-cp37m-win32.whl avec la commande pip install mysqlclient-1.4.2- cp37-cp37m-win32.whl (cela fonctionne bien sans erreur mais ne fait pas le travail requis!)

Mon objectif est de simplement connecter une base de données mysql héritée (fonctionnant à l'intérieur de XAMPP et myphpadmin) à Django. J'ai suivi la documentation qui passe à côté de la nécessité d'installer mysqlclient, et je suis resté bloqué à ce stade.

27
MissComputing

C'est ainsi que je l'ai corrigé.

Accédez à votre répertoire d'installation Django/db/backends/mysql. Vérifiez votre chemin dans le message d'erreur.

J'utilise pipenv donc mon chemin est:

/home/username/.local/share/virtualenvs/project-env/lib/python3.7/site-packages/Django/db/backends/mysql

Ouvrez le fichier base.py et recherchez:

version = Database.version_info

Mettez un pass à l'intérieur de la ligne if et comment:

raise ImproperlyConfigured ('mysqlclient 1.3.13 ou plus récent est requis; vous avez% s.'% Base de données .version)

Comme ça.

if version < (1, 3, 13):
   pass
   '''
   raise ImproperlyConfigured(
       'mysqlclient 1.3.13 or newer is required; you have %s.'
       % Database.__version__
   )
   '''

Enregistrez, fermez ce fichier et ouvrez operations.py.

Rechercher:

query = query.decode(errors='replace')

et changer le décodage pour coder

query = query.encode(errors='replace')

Maintenant, essayez d'exécuter le serveur.

45

Je suppose que votre projet utilise pymysql au lieu de mysqlclient.

Vous pouvez essayer de rechercher l'extrait de code suivant dans votre projet. Si vous le trouvez, veuillez essayer les méthodes suivantes pour résoudre ce problème:

import pymysql
pymysql.install_as_MySQLdb()

Insérez une ligne de code entre ces deux pour le faire ressembler à ceci:

import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()

Essayez ensuite de démarrer votre projet.

  • Pourquoi est-ce que je sais que vous utilisez pymysql? Parce que 0.9.3 n'est que la dernière version de pymysql.
  • Pourquoi utiliser pymysql au lieu de mysqlclient pour le projet? Parce qu'il est plus facile à installer. pymysql ne dépend pas des bibliothèques système, tandis que mysqlclient s'appuie sur une série de bibliothèques système telles que libmysqlclient-dev.
  • Pourquoi mysqlclient est-il difficile à installer et Django l'utilise toujours par défaut? Parce que mysqlclient est plus rapide et fonctionne mieux. Donc, si votre projet a des exigences de performances élevées, je vous suggère de supprimer le code compatible ci-dessus et d'installer mysqlclient dans votre projet. Si vous avez besoin d'aide lors de l'installation de mysqlclient, veuillez vous référer à ce lien: Comment installer Python module MySQLdb utilisant pip? , et assurez-vous libssl-dev a été installé avant pip install mysqlclient.
26
WisZhou

J'ai eu le même problème que la version inférieure de mysqlclient a été installée en raison de pymysql.

OS: Linux Mint 19.1

Python: .6.8

Django: 2.2.2

  1. Désinstallez mysqlclient: pip3 uninstall mysqlclient
  2. Désinstaller pymysql: pip3 uninstall pymysql
  3. Installez mysqlclient: pip3 install mysqlclient
5
Aftabul Islam

ce problème se produit lorsque vous créez un projet Django dans pycharm par défaut. Il est dû à la version par défaut de Django est 2.2.6, il vous suffit donc de rétrograder le = Django version à 2.1.7, et l'erreur dans le terminal a disparu.

pip install Django==2.1.7

c'est tout!

5
NM666

Au lieu de modifier la configuration interne, essayez de mettre à niveau la version de mysqlclient

pip3 install -U mysqlclient
4
fsalazar_sch

Si ce n'est pas essentiel pour vous, en variante, rétrogradez simplement votre Django framework de 2.2.2 (par exemple) à 2.1.

0
Alex Shchegretsov

Je trouvais une solution à ce problème depuis longtemps. J'utilisais Ubuntu 18.04 et j'ai trouvé cette solution utile pour python version 3.7.5

Étape 1. Installez libpython3.7-dev via Sudo apt-get install

> Sudo apt-get install libpython3.7-dev

Étape 2: installer mysqlclient

> python3 -m pip install mysqlclient==1.4.6
0
girishsaraf03

J'ai eu un problème similaire, je devenais

"Django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 ou plus récent est requis; vous avez 1.3.12."

Je suis donc allé au C:\Users\username\Envs\env\Lib\site-packages\Django\db\backends\mysql, ouvert base.py et changé cette ligne ...

if version < (1, 3, 13): 

à...

if version < (1, 3, 10):

qui est une version moindre que la mienne et ça a marché.

0
Ngoni Mugandani
  1. Installez la roue:

    pip installer la roue

  2. Téléchargez le fichier que vous souhaitez à partir d'ici: https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

  3. Déplacez-vous dans votre répertoire Téléchargements (je suppose que ce sera cd Downloads)

  4. Installez le fichier téléchargé avec: pip install <file name>

AVERTISSEMENT!! Vous CANT éditez le nom du fichier .whl téléchargé. Il contient certaines informations nécessaires à l'installation.

0
Dolidod Teethtard