2009-12-29 23 views
60

Estoy tratando de instalar mysql-python en un virtualenv usando pip en Windows. Al principio, recibía el mismo error reported here, pero la respuesta allí también me funcionaba. Ahora estoy recibiendo este error siguiente:"No se puede abrir el archivo de inclusión: 'config-win.h': No existe tal archivo o directorio" durante la instalación de mysql-python

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

Si el enlace simbólico (Win7) a mis regulares (no de la virtualenv) site-packages de Python/MySQLdb dir consigo

Error loading MySQLdb module: No module named _mysql 

estoy bastante perdida aquí ¿Alguna sugerencia?

+0

. Nota: como od 01/2016 no hay un controlador MySQL para python 3.5.x ver http://stackoverflow.com/questions/34456770/python-connector-for-django-1-9-and-python-3-5 Entonces esta pregunta es válido solo hasta Python 3.4. Todavía puede usar Django 1.9 (la última versión estable a partir de 01/2016) con él. –

Respuesta

16

Actualización para mysql 5.5 y config-win.h no visible problema

En 5.5 config-win. en realidad se ha movido a la carpeta separada de Connector en Windows. es decir, algo bajo como:

C: \ Archivos de programa \ MySQL \ Conector C 6.0.2 \ incluyen

Para superar el problema de una necesidad no sólo de descarga "bits dev" (que en realidad se conecta al conector) sino también para modificar los scripts de instalación de mysqldb para agregar la carpeta de inclusión. He hecho una solución sucia rápida como eso.

site.cfg:

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

en setup_windows.py busque la línea

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

y añadir:

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

después de ella.

Ugly pero funciona hasta que los autores de mysqldb cambien el comportamiento.


Casi se me olvidó mencionar. De la misma manera, es necesario agregar una entrada adicional similar para libs:

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

es decir, sus setup_windows.py ve muy parecido:

... 
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' ] 
... 
+0

Gracias a todos, no funcionó para mí hasta que he hecho lo que figura aquí –

+0

como de mysql- python 1.2.4, el sitio.cfg predeterminado ya se ha actualizado para reflejar este comentario. Sin embargo, el site.cfg predeterminado es para ventanas de 64 bits, por lo que la ruta al conector será incorrecta en 32 bits. Eliminar (x86) y eliminar "MySQL" de "MySQL Connector C 6.0.2" – fastmultiplication

+1

@fastmultiplicación no tengo esa carpeta, ¿qué debo instalar? –

3

Instalando dev bits para mysql eliminé el error config-win.h que estaba teniendo, y lancé otro. Failed to load and parse the manifest. The system cannot find the file specified. Encontré la respuesta a mi problema en esta publicación: http://www.fuyun.org/2009/12/install-mysql-for-python-on-windows/.

He copiado el archivo 'C: \ Python26 \ Lib \ distutils \ msvc9compiler.py` en mi virtualenv, hice la edición sugerida en el enlace de arriba, y las cosas están funcionando bien.

+1

Pregunta rápida sobre "La instalación de bits de desarrollo para mysql eliminó el error config-win.h". son "bits de desarrollo" y dónde puedo conseguirlos? =) Tengo un problema similar. – John

+0

Yo también. He hecho la instalación completa de mySql 5.5. fijo site.cfg. Pero aún obteniendo el error: _mysql.c (34): error fatal C1083: No se puede abrir el archivo de inclusión: 'config-win.h': No existe tal archivo o directorio – Shrike

+0

Estoy reinstalando la configuración de mi desarrollo de python completo, y estoy estancado en este punto. ¿En qué parte del mundo puedo encontrar el archivo "config-win.h"? – rocketmonkeys

7

Probablemente la respuesta sea instalar MySQL Developer Build y seleccionar la opción "C headers \ libs" durante la configuración. (Como se informa en esta entrada: Edificio MySQLdb para Python en Windows en rationalpie.wordpress.com)

tal vez incluso mejor solución es instalar una acumulación precompilado: http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe

+0

¿Se puede instalar el binario en un virtualenv? Cuando lo intenté, solo me dio la opción de la instalación de mi sistema de python. – rocketmonkeys

+0

No, no lo he intentado. Aquí puede encontrar un conjunto completo de paquetes MySQLdb precompilados para Windows. Tal vez uno de ellos funcione para usted. Http://www.codegood.com/archives/4 – chodorowicz

+0

No he podido hacer esto en un virtualenv (pero bien, pero sí) También probé con versiones inferiores (1.2.1, 1.2.2) sin ningún éxito. Es una dependencia de una aplicación mía, así que realmente me gustaría ver una solución más robusta. Envié un informe de error aquí https://sourceforge.net/tracker/?func=detail&aid=3153396&group_id=22307&atid=374932 – Dave

1

Trate ActivePython,

pypm -E C:\myvirtualenv install mysql-python 
4

que tenía mucho dolor de cabeza con MySQLdb también.

¿Por qué no utilizar el conector oficial de MysQL Python?

easy_install mysql-connector-python 

O puede descargarlo desde aquí: http://dev.mysql.com/downloads/connector/python/

Documentación: http://dev.mysql.com/doc/refman/5.5/en/connector-python.html

+0

Fue la solución más fácil para mí. No olvides usar la API 'mysqlconnector':' engine = create_engine ('mysql + mysqlconnector: // scott: tiger @ localhost/foo') ' – mtoloo

+0

Esta solución funcionó mejor para mí, tanto en Python 2 como en 3. – twasbrillig

+0

Actualmente, esto solo admite Python hasta 3.4 – danio

81

Todo lo que tenía que hacer era ir a Oracle, MySQL y descargar el conector C 6.0.2 (¡más nuevo no funciona!) y realiza la instalación típica.

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

Asegúrese de incluir todos los accesorios opcionales adicionales (binarios) a través de la instalación personalizada, sin que éstas no funcionó para la win64.msi

Una vez hecho esto, entré en pycharms, y seleccionó el paquete MySQL-python> = 1.2.4 para instalar, y funcionó muy bien. No es necesario actualizar ninguna configuración ni nada de eso. Esta fue la versión más simple para mi trabajo.

creo que sirve

+10

+1 Con mucho, la respuesta más simple a este problema.Una palabra de advertencia, seleccione la arquitectura apropiada (x86/64bit) del controlador. –

+0

Gracias Kevin! ¡Sabía que debe haber sido una manera más fácil! Funcionó muy bien. – User

+3

Amigo, eres un salvavidas. He estado tirando de mi cabello por un tiempo debido a este error, probé todas las otras soluciones que eran más complicadas. Gracias por proporcionar una solución tan simple. – turingcomplete

23

La solución aceptada ya no parece funcionar para las nuevas versiones de MySQL-pitón. El instalador ya no proporciona un archivo site.cfg para editar.

Si está instalando mysql-python buscará C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include. Si usted tiene una instalación de 64 bits de MySQL, puede simplemente invocar:

  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. Run pip install mysql-python
  3. Eliminar el enlace simbólico creado en el paso 1
+9

Esta es la idea correcta para una solución, sin embargo, no funcionó para mí. Para resolver el problema, copié el directorio C: \ Archivos de programa \ MySQL \ MySQL Connector C 6.0.2 \ a C: \ Archivos de programa (x86) \ MySQL \ MySQL Connector C 6.0.2 \. Esto resolvió el problema para mí – Omer

+1

Gracias, ayudó –

+1

Copiar el directorio funcionó para mí también. – tobip

15

La respuesta aceptada está fuera de la fecha. Algunas de las sugerencias ya estaban incorporadas en el paquete, y todavía recibía el error sobre la falta de config-win.h & mysqlclient.lib.

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

    There's a zip file for the conenctor too but that didn't work because mysqlclient.lib is in lib directory whereas the installer expects it in lib/opt . Instead of hacking site.cfg or setup_windows.py, the msi does the job.

  • pip instalar MySQL-python

P. S. Como ya no uso MySQL, mi respuesta puede estar desactualizada también.

+0

¿Es esto también para la versión 3.3? Hice lo que mencionaste al descargar e instalar el script msi y luego el script pip, pero sigo recibiendo el error en pip sobre la falta config-win.h. – Ryan

+0

Parece que en mi caso, veo en el error de instalación C: \ archivos de programa (x86). Uso Windows de 32 bits que no usa "(x86)" en la ruta. Esto es, pienso por qué el error me está sucediendo. El único problema es que no sé dónde se encuentra el archivo para corregir esta configuración de ruta. – Ryan

+2

Agradable. Instalé la versión x64 pero no funcionó. Luego seguí tu consejo e instalé el x86 y voilà! Estoy usando Python 3.4.3 y ejecutado 'pip install mysql-python' y funciona. ;-) –

3

Si PIP no se puede instalar "MySQLdb", una solución consiste en descargar e instalar en su máquina por primera vez de este enlace

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

luego copiar todos MySQL * y _mysql archivos * y directorios de su sistema de Python para su directorio virtualenv:

c:\Python27\Lib\site-packages (o trayectoria similar a su sistema de Python) a c:\my_virtenv\Lib\site-packages (ruta a su virtualenv)

+0

Esto de hecho funcionó para mí, gracias, me salvaste el día – indichimp

+0

Esta solución ya no funciona. Intentó las cuatro posibilidades y las cuatro fallaron. – canadiancreed

2

En mi caso, mi solución fue copiar la carpeta creada desde mysql-connector-c-6.0.2-win32.msi (a la que se hace referencia desde el buffer de nombre de usuario en una publicación anterior), que se encuentra en c: \ Program Files \ MySQL \ MySQL Connector C 6.0.2 y crear una nueva ruta con Program Files (x86) y pegar el contenido allí ya que la instalación no está comprobando correctamente entre máquinas de 32 bits y de 64 bits.

Entonces, la nueva ruta es C: \ Archivos de programa (x86) \ MySQL \ MySQL Connector C 6.0.2. Esta es la ruta que busca el instalador, así que pegué los archivos allí para ayudar al instalador a encontrar los archivos, lo que estaba causando el error sobre la falta de config-win.h

1

Sí, seguí la respuesta de Bugagotti , Y no funciona en mi windows (Win7 64 bit, py27 y tengo el conector de mysql 6.1 instalado) para mysql-python-1.2.5, así que hice algunos cambios incluso sucios dentro de mysql-python-1.2.5:

primer lugar, el site.cfg:

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

En segundo lugar, la _mysql.c:

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

Para:

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

Y con estos cambios, la cuestión config_win.h se ha ido, pero todavía hay un problema de enlace:

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

Para esto, he cambiado el setup_windows.py :

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

Luego funcionó finalmente.

1

Seguí el método de Mingcai SHEN.

Pero en mi caso, he cambiado el conector a

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

Y los library_dirs se cambia a

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

porque no tengo un directorio vs9. Funciona, pero No sé por qué.

Tengo vs2012 instalado, y el directorio lib del conector solo tiene vs10 y vs11, en los que vs11 no funciona. El VCForPyhton27.mis que instalé parece ser compatible con vs9.

De todos modos, esto funciona.Y si quieres arriesgarte, puedes intentarlo.

9

Sé que esta publicación es muy antigua, pero sigue apareciendo como la más popular en google, así que añadiré más información al respecto.

Estaba teniendo los mismos problemas que OP pero ninguna de las respuestas sugeridas parece funcionar para mí. Principalmente porque "config-win.h" no existía en ninguna parte de la carpeta de instalación del conector.

Estaba usando el último Connector C 6.1.6 ya que eso fue lo que sugirió el instalador de MySQL.

Sin embargo, esto no parece ser compatible con el último paquete MySQL-python (1.2.5). Al intentar instalarlo, pude ver que estaba buscando C Connector 6.0.2 explícitamente.

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

Así que mediante la instalación de esta versión de https://dev.mysql.com/downloads/file/?id=378015 el paquete python instalado sin ningún problema.

+0

¡Muchas gracias! Esto funcionó! – keitereth24

+0

A partir de hoy (2017/7/2), esta es la única opción que funcionó para mí en Win10 x64, con Python 2.7. He probado el conector 6.1, pero obviamente no funciona. – BrandonSun

1

Solución que funcionó para mí en Windows: instale las versiones 32 -bit y 64 -bit del MySQL Connector/C 6.0.2. Abrir Command Prompt y ejecute:

pip install mysql-python 
+0

funcionó para mí también. – sevenfourk

0

Si usted está haciendo esto en un entorno virtual si el uso de Visual Studio o de lo contrario, tratar easy_install MySQL-python

1

Para mí el siguiente enfoque resuelve el problema (Python 3.5.2; mysqlclient 1.3.9):

  1. Dowload última conector MySQL C http://dev.mysql.com/downloads/connector/c/ (para mí fue de Windows (x86, 64-bit), el instalador MSI)
  2. Copiar c:\Program Files\MySQL\MySQL Connector C 6.0.2\ directorio para c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\
  3. Run pip install mysqlclient
  4. [opcional] eliminar c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\

La cuestión aquí es sólo para los propietarios de instalación bit x64, ya script de construcción está tratando de localizar el conector C incluye en el directorio de archivos de programa x86.

2

Descargar el conector de MySQL 6.0.2 C desde abajo enlace e instalar.

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

Después de instalar el MySQL Connector C 6.0.2, copie la carpeta "MySQL Connector C 6.0.2" de "C: \ Archivos de programa \ MySQL" a "C:. \ Archivos de programa (x86) \ MySQL"

A continuación, escriba

pip install MySQL-python 

Definitivamente va a trabajar

Cuestiones relacionadas