60 votes

pip install mysqlclient renvoie "fatal error C1083 : Cannot open file : 'mysql.h' : No such file or directory

Voici le problème : J'essaie d'installer mysqlclient de la manière suivante

C:\Users\amccommon349 >pip install mysqlclient Récupérer mysqlclient Utilisation de la mise en cache https://files.pythonhosted.org/packages/ec/fd/83329b9d3e14f7344d1 cb31f128e6dbba70c5975c9e57896815dbb1988ad/mysqlclient-1.3.13.tar.gz

Installation des paquets collectés : mysqlclient

Exécution de setup.py install pour mysqlclient ... erreur

Complete output from command c:\users\amccommon349\appdata\local\programs\python\python36\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\AMCCOM~1\\AppData\\Local\\Temp\\pip-install-qcgo48hf\\mysqlclient\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\AMCCOM~1\AppData\Local\Temp\pip-record-q4yoftj8\install-record.txt --single-version-externally-managed --compile:

c : \users\amccommon349\appdata\local\programs\python\python36\lib\distutils\d ist.py:261 : UserWarning : Option de distribution inconnue : "long_description_content_". type'

  warnings.warn(msg)
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.6
copying _mysql_exceptions.py -> build\lib.win-amd64-3.6
creating build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\__init__.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\compat.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\connections.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\converters.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\cursors.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\release.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\times.py -> build\lib.win-amd64-3.6\MySQLdb
creating build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\__init__.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\CLIENT.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\CR.py -> build\lib.win-amd64-3.6\MySQLdb\constants

copying MySQLdb\constants\ER.py -> build\lib.win-amd64-3.6\MySQLdb\constants

copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\FLAG.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\REFRESH.py -> build\lib.win-amd64-3.6\MySQLdb\constants

exécution de build_ext

building '_mysql' extension
creating build\temp.win-amd64-3.6
creating build\temp.win-amd64-3.6\Release
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\cl.exe /c/nologo/Ox /W3 /GL /DNDEBUG /MD -Dversion_info=(1,3,13,'final',0) -D__version__=1.3.13 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include" -Ic:\users\amccommon349\appdata\local\programs\python\python36\include -Ic:\users\amccommon349\appdata\local\programs\python\python36\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.14.26428\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\um" "-IC:\ProgramFiles (x86)\Windows Kits\10\include\10.0.17134.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\cppwinrt" /Tc_mysql.c /Fobuild\temp.win-amd64-3.6\Release\_mysql.obj /Zl
_mysql.c
_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

Je me suis assuré que j'avais tous les fichiers nécessaires à partir des outils de construction de Visual Studio, j'ai téléchargé le connecteur mysql-python et j'ai mis à jour mes outils pip et setup. Je suis un débutant complet dans ce domaine et j'apprécierais toute contribution sur la façon de corriger cette erreur.

0 votes

77voto

Nipun Sampath Points 2454

Vous pouvez télécharger des binaires Windows non officiels pour votre version de python en utilisant https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient . Puis installez-le en utilisant pip. De cette façon, vous éviterez de vous embêter avec les outils de construction de Visual Studio.

Téléchargez simplement le fichier mysqlclient.whl le plus approprié pour vous. Je pense que dans votre cas, ce sera

mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl

et exécuter

pip install "path to the downloaded .whl file"

0 votes

Merci beaucoup @NipunSampath.

0 votes

J'ai essayé cette solution mais elle n'a pas fonctionné. Dois-je redémarrer l'ordinateur ?

0 votes

@Labeo que se passe-t-il quand vous essayez ceci ? Et non, vous n'avez pas besoin de redémarrer pour que cela fonctionne.

33voto

Cette erreur se produit lorsque vous essayez d'installer mysqlclient for python32 dans des environnements 64 bits. Désinstallez python et réinstallez la version 64 bits. Ensuite, pip install mysqlclient fonctionnera sans erreur.

17 votes

Pas vraiment, il a répondu à la question en expliquant l'erreur.

1 votes

J'utilise la version 64 bits de python 3.9.0. Je rencontre toujours le même problème lors de l'installation de mysql.

21voto

John Points 513

C'est probablement l'une des erreurs les plus stupides dont j'ai été témoin.
J'ai Python 3.7.3 32bit avec la dernière version de pip3 et j'installais des roues sur mon Python.... et je suis tombé sur cette erreur STUPIDE.....
Ma situation est probablement un peu différente mais vous pouvez la résoudre en regardant attentivement l'erreur.... au début il semble que quelque chose manque et vous commencez à vous blâmer, Windows ,32/64bit et la liste continue et continue....
Prenez un peu de recul... Prenez du recul et lisez le méchant message d'erreur rouge. .... le lire vraiment bien .
Dans mon cas, c'était

ERROR: Command errored out with exit status 1:
     command: 'c:\users\myUserName\appdata\local\programs\python\python37-32\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\MASTER~1\\AppData\\Local\\Temp\\pip-install-z7x81g2q\\mysqlclient\\setup.py'"'"'; __file__='"'"'C:\\Users\\MASTER~1\\AppData\\Local\\Temp\\pip-install-z7x81g2q\\mysqlclient\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\MASTER~1\AppData\Local\Temp\pip-record-z1mvci5v\install-record.txt' --single-version-externally-managed --compile
         cwd: C:\Users\MASTER~1\AppData\Local\Temp\pip-install-z7x81g2q\mysqlclient\
    Complete output (30 lines):
    running install
    running build
    running build_py
    creating build
    creating build\lib.win32-3.7
    creating build\lib.win32-3.7\MySQLdb
    copying MySQLdb\__init__.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\_exceptions.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\compat.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\connections.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\converters.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\cursors.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\release.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\times.py -> build\lib.win32-3.7\MySQLdb
    creating build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\__init__.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CLIENT.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CR.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\ER.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FLAG.py -> build\lib.win32-3.7\MySQLdb\constants
    running build_ext
    building 'MySQLdb._mysql' extension
    creating build\temp.win32-3.7
    creating build\temp.win32-3.7\Release
    creating build\temp.win32-3.7\Release\MySQLdb
    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.21.27702\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MT -Dversion_info=(1,4,2,'post',1) -D__version__=1.4.2.post1 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb" -Ic:\users\MyUserName\appdata\local\programs\python\python37-32\include -Ic:\users\MyUserName\appdata\local\programs\python\python37-32\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.21.27702\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt" /TcMySQLdb/_mysql.c /Fobuild\temp.win32-3.7\Release\MySQLdb/_mysql.obj /Zl /D_CRT_SECURE_NO_WARNINGS
    _mysql.c
    MySQLdb/_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.21.27702\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\users\MyUserName\appdata\local\programs\python\python37-32\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\MASTER~1\\AppData\\Local\\Temp\\pip-install-z7x81g2q\\mysqlclient\\setup.py'"'"'; __file__='"'"'C:\\Users\\MASTER~1\\AppData\\Local\\Temp\\pip-install-z7x81g2q\\mysqlclient\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\MASTER~1\AppData\Local\Temp\pip-record-z1mvci5v\install-record.txt' --single-version-externally-managed --compile Check the logs for full command output.

Avez-vous bien lu ? ... Je suppose que vous avez tout ... les outils de construction, le MySQL Connector C 6.1 ... vous l'avez même déplacé dans Program Files (x86) ... alors qu'est-ce qui ne va pas ? ...
Maintenant, regardez de plus près

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.21.27702\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MT -Dversion_info=(1,4,2,'post',1) -D__version__=1.4.2.post1 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb" -

Je suis presque sûr que vous l'avez vu...TOUJOURS PAS .... Laissez-moi le mettre en gras pour vous.

"-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb" -

mariadb
Eh bien, il ne peut pas être plus stupide que cela ... l'installateur cherche mariadb. comprend et plus tard librairies Il suffit d'aller sur le site mariadb et de télécharger le connecteur MariaDB C/C++ et de l'installer...
Eh bien, ce n'est pas fini Allez à C:\Program Fichiers (x86) \MySQL\MySQL Connecteur C 6.1 \include et créer le dossier mariadb...et copier coller le contenu de l'installation du connecteur mariaDb inclure dossier
à nouveau ne va pas par là... va vers... C:\Program Fichiers (x86) \MySQL\MySQL Connecteur C 6.1 \lib et refaire le même exercice pour le lib dossier
donc vous devriez avoir

C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb  

C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib\mariadb  

Maintenant, appuyez sur le bouton pip3 install mysqlclient
et profiter de l'installation sans se faire prier... la finalité

Successfully installed mysqlclient-1.4.2.post1

0 votes

Tout ce que cela fait pour moi est de créer 64 erreurs de liens non résolus. Bien vu cependant. Je pense que je vais juste installer la version 32 bits et en avoir fini avec elle.

0 votes

Oh mon dieu, après avoir lutté avec l'installation de mysqlclient, ceci m'a finalement aidé.

0 votes

Merci John. Cela m'a vraiment aidé.

7voto

Code_Worm Points 846

J'ai eu ce problème (exactement la même erreur) et j'ai essayé toutes les solutions mentionnées ci-dessus, et aucune d'entre elles n'a fonctionné (du moins pour moi), en fait j'étais sur le point de m'arracher les cheveux à cause de ce problème jusqu'à ce que je trouve la solution d'une manière très bizarre, simple et stupide !!! .

J'ai fait les démarches suivantes pour que le problème soit résolu et que la vie redevienne douce.

J'ai d'abord installé MySQL Connector/C de ici

Ensuite (une fois l'installation terminée), j'ai copié MySQL Connector C 6.1 dossier de Program files/MySQL en Program files (x86)/MySQL

Notez que vous devrez peut-être créer MySQL s'il n'existe pas dans le dossier Program files (x86) (il n'existait pas pour moi)

Aussi simple que cela, cela a fonctionné pour moi, il semble que pour certains (ou tous) les Windows 64-bit, pip ou plus probablement mysqlclient configurer les recherches script uniquement Program files (x86) pour certains fichiers MySQL (tels que 'mysql.h') et ne recherche pas Program files et comme il ne trouve rien dans Program files (x86) soulève l'erreur très bête !!! n'est-ce pas

0 votes

Oui, j'ai essayé plusieurs des solutions ci-dessus, mais rien n'a fonctionné pour moi, alors j'ai essayé ce que vous avez dit dans le commentaire et cela a fonctionné pour moi parfaitement. Merci.

1 votes

@user1655410 bon codage :)

3voto

Ralph Ritoch Points 542

C'est un problème avec la version 64 bits de python sur Windows 10. Ce qui suit a réparé le problème pour moi.

  1. Installer la version 32 bits de python pour Windows (actuellement la version 3.7.1)
  2. Installer les outils de construction de Visual Studio https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017 pour C++
  3. Installer le connecteur mysql 32 bits version 6.1.11 à partir de https://downloads.mysql.com/archives/c-c/

Après cela, j'ai pu installer mysqlclient avec pip install mysqlclient .

J'espère que quelqu'un trouvera une meilleure solution qui ne nécessite pas de passer en 32 bits, car cette solution n'est pas bonne, elle fonctionne tout simplement. J'ai trouvé un moyen de contourner le problème de mysql mais j'ai rencontré le problème à nouveau en essayant d'installer des canaux. Il semble que python 64 bits recherche les bibliothèques 32 bits au lieu des bibliothèques 64 bits sous Windows. Jusqu'à présent, cette solution a résolu tous mes problèmes de construction de python sous Windows.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X