web-dev-qa-db-fra.com

"Impossible d'ouvrir le fichier d'inclusion: 'config-win.h': Aucun fichier ou répertoire de ce type" lors de l'installation de mysql-python

J'essaye d'installer mysql-python dans un virtualenv en utilisant pip sur Windows. Au début, je recevais la même erreur rapporté ici , mais la réponse a fonctionné pour moi aussi. Maintenant, j'obtiens cette erreur suivante:

_mysql.c(34) : Fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

Si je crée un lien symbolique (Win7) vers mon répertoire site-packages/MySQLdb de python habituel (pas celui de virtualenv), 

Error loading MySQLdb module: No module named _mysql

Je suis plutôt perdu ici. Des pointeurs?

69
saturdayplace

Mise à jour pour mysql 5.5 et config-win.h problème non visible

Dans 5.5 config-win. a en fait déplacé vers Connector un dossier distinct dans Windows. c'est-à-dire comme:

C:\Program Files\MySQL\Connector C 6.0.2\include

Pour résoudre ce problème, il faut non seulement télécharger "dev bits" (qui connecte réellement le connector), mais également modifier les scripts d'installation de mysqldb pour ajouter le dossier include. J'ai fait une solution rapide sale comme ça. 

site.cfg:

# Windows connector libs for MySQL.
connector = C:\Program Files\MySQL\Connector C 6.0.2

dans setup_windows.py localisez la ligne 

include_dirs = [ os.path.join(mysql_root, r'include') ]:

et ajouter:

include_dirs = [ os.path.join(options['connector'], r'include') ]

après ça.

Ugly mais fonctionne jusqu'à ce que les auteurs de mysqldb changent le comportement.


J'ai presque oublié de mentionner. De la même manière, il faut ajouter une entrée supplémentaire similaire pour les bibliothèques:

library_dirs = [ os.path.join(options['connector'], r'lib\opt') ]

c'est-à-dire que votre setup_windows.py ressemble à ceci:

...
library_dirs = [ os.path.join(mysql_root, r'lib\opt') ]
library_dirs = [ os.path.join(options['connector'], r'lib\opt') ]
libraries = [ 'kernel32', 'advapi32', 'wsock32', client ]
include_dirs = [ os.path.join(mysql_root, r'include') ]
include_dirs = [ os.path.join(options['connector'], r'include') ]
extra_compile_args = [ '/Zl' ]
...
16
Bugagotti

Tout ce que je devais faire était d'aller chez Oracle, télécharger le connecteur MySQL C 6.0.2 (le plus récent ne fonctionne pas!) Et effectuer l'installation typique.

ancien lien (page non trouvée)

http://dev.mysql.com/downloads/connector/c/6.0.html#downloads

nouveau lien

https://downloads.mysql.com/archives/c-c/

Assurez-vous d’inclure tous les extras optionnels (binaires supplémentaires) via l’installation personnalisée. Sans eux, cela ne fonctionnait pas pour win64.msi.

Une fois cela fait, je suis allé dans pycharms et j'ai choisi le paquet MySQL-python> = 1.2.4 à installer, et cela a très bien fonctionné. Pas besoin de mettre à jour une configuration ou quelque chose comme ça. C'était la version la plus simple pour moi.

J'espère que ça aide

86
Kevin Mansel

La solution acceptée ne semble plus fonctionner pour les nouvelles versions de mysql-python. Le programme d'installation ne fournit plus de fichier site.cfg à modifier.

Si vous installez mysql-python, il cherchera C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include. Si vous avez une installation 64 bits de MySQL, vous pouvez simplement appeler:

  1. mklink /d "C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" "C:\Program Files\MySQL\MySQL Connector C 6.0.2\include"
  2. Exécuter pip install mysql-python
  3. Supprimer le lien symbolique créé à l'étape 1
25
Gili

La réponse acceptée est obsolète. Certaines des suggestions ont déjà été incorporées dans le paquet, et le message d'erreur relatif à l'absence de config-win.h et de mysqlclient.lib me faisait toujours défaut.

  • Installer mysql-connector-c-6.0.2-win32.msi

    Il y a aussi un fichier Zip pour le générateur, mais cela n'a pas fonctionné car mysqlclient.lib est dans le répertoire lib alors que le programme d'installation attend il en lib/opt. Au lieu de pirater site.cfg ou setup_windows.py, le fichier MSI fait le travail.

  • pip installer mysql-python

P.S. Puisque je n’utilise plus MySQL, ma réponse est peut-être aussi dépassée. 

15
user

Je sais que ce message est très ancien, mais il continue à figurer parmi les titres les plus consultés de Google. Je vais donc ajouter quelques informations supplémentaires à ce problème. 

J'avais les mêmes problèmes que OP mais aucune des réponses suggérées ne semblait fonctionner pour moi. Principalement parce que "config-win.h" n'existait nulle part dans le dossier d'installation du connecteur. 

J'utilisais le dernier connecteur C 6.1.6 car c'était ce que l'installateur de MySQL avait suggéré. 

Cela ne semble cependant pas être supporté par le dernier paquetage MySQL-python (1.2.5). En essayant de l'installer, j'ai pu constater qu'il cherchait explicitement C Connector 6.0.2. 

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

Donc, en installant cette version à partir de https://dev.mysql.com/downloads/file/?id=378015 le paquet python est installé sans problème.

10
jimmy

La solution consiste probablement à installer MySQL Developer Build et à sélectionner l'option "En-têtes C\libs" lors de la configuration. (comme indiqué dans cette entrée: Création de MySQLdb pour Python sous Windows sur rationalpie.wordpress.com)

Une solution encore meilleure consiste peut-être à installer un build précompilé: http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe

7
chodorowicz

Si pip ne parvient pas à installer "MySQLdb", une solution consiste à le télécharger et à l'installer d'abord sur votre ordinateur à partir de ce lien

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

puis copiez tous les fichiers et répertoires MySQL * et _mysql * de votre système Python dans votre répertoire Virtualenv:

c:\Python27\Lib\site-packages (ou un chemin similaire à votre système Python) à c:\my_virtenv\Lib\site-packages (chemin de votre virtualenv)

5
Dmitriy

Si vous rencontrez toujours ce problème, vous pouvez télécharger le programme d'installation à partir de http://code.google.com/p/soemin/downloads/detail?name=MySQL-python-1.2.3.win32-py2. 7.exe

4
Ethan

MySQLdb me causait également beaucoup de maux de tête.

Pourquoi ne pas utiliser le connecteur MysQL Python officiel?

easy_install mysql-connector-python

Ou vous pouvez le télécharger ici: http://dev.mysql.com/downloads/connector/python/

Documentation: http://dev.mysql.com/doc/refman/5.5/fr/connector-python.html

4
Yassine El Badaoui

La solution de travail la plus simple:

Téléchargez le lien MySQL Connector C 6.0.2 ci-dessous et installez-le.

http://dev.mysql.com/downloads/connector/c/6.0.html#downloads

Après avoir installé MySQL Connector C 6.0.2, copiez le dossier "MySQL Connector C 6.0.2" de "C:\Program Files\MySQL" dans "C:\Program Files (x86)\MySQL".

Puis tapez

pip install MySQL-python

Cela fonctionnera certainement.

3
Gil Baggio

L'installation de dev bits pour mysql s'est débarrassé de l'erreur config-win.h que je rencontrais et en a jeté une autre. Failed to load and parse the manifest. The system cannot find the file specified. J'ai trouvé la réponse à mon problème dans cet article: http://www.fuyun.org/2009/12/install-mysql-for-python-on-windows/ .

J'ai copié le fichier 'C:\Python26\Lib\distutils\msvc9compiler.py` dans mon fichier virtualenv, j'ai fait la modification suggérée dans le lien ci-dessus, et tout se passe bien.

3
saturdayplace

Dans mon cas, mon correctif consistait à copier le dossier créé à partir de mysql-connector-c-6.0.2-win32.msi (référencé à partir du tampon du nom d'utilisateur dans un message précédent), situé à l'emplacement c:\Program Files\MySQL\MySQL Connector C 6.0.2 et créer un nouveau chemin avec Program Files (x86) et y coller le contenu car l’installation ne vérifie pas correctement les ordinateurs 32 bits et 64 bits. 

Le nouveau chemin d'accès est donc C:\Program Files (x86)\MySQL\Connecteur MySQL C 6.0.2. Il s’agit du chemin recherché par le programme d’installation. J’ai donc collé les fichiers à cet endroit pour aider le programme d’installation à trouver les fichiers, ce qui était à l’origine de l’erreur concernant la perte de config-win.h.

2
Ryan

Solution qui a fonctionné pour moi sur Windows: Installez les versions 32-bit et 64-bit du MySQL Connector/C 6.0.2 . Ouvrez Command Prompt et exécutez:

pip install mysql-python
1
raul

Essayez ActivePython ,

pypm -E C:\myvirtualenv install mysql-python
1
Sridhar Ratnakumar

J'ai suivi la méthode de Mingcai SHEN.

Mais dans mon cas, j'ai changé le connecteur en

connector = C:\Program Files\MySQL\MySQL Connector.C 6.1

Et le paramètre library_dirs est remplacé par 

library_dirs = [ os.path.join(connector, r'lib\vs10') ]

parce que je n'ai pas de répertoire vs9. Cela fonctionne, mais je ne sais pas pourquoi .

J'ai installé vs2012 et le répertoire lib du connecteur ne contient que vs10 et vs11, dans lequel vs11 ne fonctionne pas. Le VCForPyhton27.mis que j'ai installé semble prendre en charge vs9.

Quoi qu'il en soit, cela fonctionne. Et si vous voulez risquer cela, vous pouvez essayer.

1
zijuexiansheng
building '_mysql' extension
creating build\temp.win-AMD64-2.7
creating build\temp.win-AMD64-2.7\Release
C:\Users\TimHuang\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\AMD64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" -Ic:\python27\include -Ic:\python27\PC /Tc_mysql.c /Fobuild\temp.win-AMD64-2.7\Release\_mysql.obj /Zl
_mysql.c
_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

Si vous voyez ceci lorsque vous essayez pip install mysql-python, le moyen le plus simple est de copier 

C:\Program Files\MySQL\MySQL Connector C 6.0.2to C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2

J'ai essayé de créer le lien symbolique mais Windows n'arrête pas de me lancer C:\WINDOWS\system32>mklink /d "C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" "C:\Program Files\MySQL\MySQL Connector C 6.0.2\include" The system cannot find the path specified.

1
timbuntu2

J'ai suivi la réponse de Bugagotti, et cela ne fonctionne pas dans mes fenêtres (Win7 64 bits, py27 et le connecteur mysql 6.1 est installé) pour mysql-python-1.2.5, j'ai donc fait des changements même sales dans mysql-python- 1.2.5:

Tout d'abord, le site.cfg:

connector = C:\Program Files\MySQL\MySQL Connector C 6.1

Deuxièmement, le _mysql.c:

#if defined(MS_WINDOWS)
#include <config-win.h>
#else
#include "my_config.h"
#endif

À:

#if 0 /*defined(MS_WINDOWS)*/
#include <config-win.h>
#else
#include "my_config.h"
#endif

Et avec ces changements, le problème de config_win.h aura disparu, mais il reste un problème de lien:

LINK : fatal error LNK1181: cannot open input file 'mysqlclient.lib'

Pour cela, j'ai changé le fichier setup_windows.py:

library_dirs = [ os.path.join(connector, r'lib\vs9') ]  ## the original value was r'lib\opt'

Puis cela a fonctionné finalement.

1
Mingcai SHEN

Pour moi, l'approche suivante a résolu le problème (Python 3.5.2; mysqlclient 1.3.9):

  1. Téléchargez le dernier connecteur MySQL C http://dev.mysql.com/downloads/connector/c/ (pour moi Windows (x86, 64 bits), MSI Installer)
  2. Copier le répertoire c:\Program Files\MySQL\MySQL Connector C 6.0.2\ dans c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\
  3. Exécuter pip install mysqlclient
  4. [facultatif] delete c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\

Le problème ici concerne uniquement les propriétaires d’installation x64 bits, car le script de construction tente de localiser le connecteur C inclus dans le répertoire des fichiers de programme x86.

1
Dagaz

Téléchargez la version de Connector depuis https://dev.mysql.com/downloads/connector/c/6.0.html Dans mon cas, j'avais installé un connecteur 64 bits et mon python était en 32 bits. Je devais donc copier MySQL à partir de fichiers de programme vers Program Files (86)

0
ishwar rimal

Étapes pour Window10:

  • Aller au https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
  • Téléchargez la bonne version selon la version de Python et les spécifications matérielles: pour mon cas, mysqlclient‑1.4.2‑cp37‑cp37m‑win32.whl fonctionne pour python3.7 et les processeurs Intel.
  • Pendant que votre env est toujours activé, allez dans le dossier de téléchargement et lancez pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl
0
David P
  1. Télécharger à partir de cette

  2. Puis installez ce whl par installateur pip. Maj + clic droit dans le dossier Téléchargé et choisissez Open powershell here. Puis installez en utilisant la commande: pip install package_name.whl

0
Jacky Pham

Si vous effectuez cette opération dans un environnement virtuel, que vous utilisiez Visual Studio ou non, essayez easy_install MySQL-python 

0
Saher Ahwal