Pregunta

Estoy tratando de construir lxml para Python 2.7 en la máquina Windows de 64 bits. No pude encontrar el huevo lxml para Python versión 2.7. Así que estoy compilación de fuentes. Estoy siguiendo las instrucciones en este sitio

http://lxml.de/build.html

en la sección de enlace estático. Estoy recibiendo el error

C:\Documents and Settings\Administrator\Desktop\lxmlpackage\lxml-2.2.6\lxml-2.2.
6>python setup.py bdist_wininst --static
Building lxml version 2.2.6.
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' need
s to be available.
ERROR: 'xslt-config' is not recognized as an internal or external command,
operable program or batch file.

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
Building against libxml2/libxslt in one of the following directories:
  ..\libxml2-2.7.6--win32--w2k--x64\lib
  ..\libxslt-1.1.26--win32--w2k--x64--0002\lib
  ..\zlib-1.2.4--win32--w2k--x64
  ..\iconv-1.9.1--win32--w2k--x64-0001\lib
running bdist_wininst
running build
running build_py
running build_ext
building 'lxml.etree' extension
error: Unable to find vcvarsall.bat

Puede alguien ayudarme con esto? He intentado establecer la ruta para tener Microsoft Visual Studio .. Puedo correr vcvarsall.bat desde la línea de comandos de Python .. pero está teniendo problemas

¿Fue útil?

Solución

apuesto a que no está utilizando VS 2008 para este :)

Hay def find_vcvarsall (versión) : función (supongo que lo que se ve por vcvarsall.bat) en distutils con el siguiente comentario

  

Al principio se trata de encontrar la   DirProducto de VS 2008 en el registro.   Si este falla, cae de nuevo a la   VS90COMNTOOLS env var.

Si usted no está utilizando VS 2008 entonces tiene ni la clave de registro ni la variable de entorno adecuado y por eso distutils no puede encontrar el archivo vcvarsall.bat. Lo hace no verificación si el archivo bat es accesible a través de la variable de entorno PATH.

La solución es definir la variable VS90COMNTOOLS a Herramientas del directorio de Visual Studio.

Después de haber dicho echar un vistazo a href="http://docs.python.org/distutils/apiref.html#module-distutils.msvccompiler" 11.4. distutils.msvccompiler - sección Compilador de Microsoft en documentos de Python, que los estados

  

Típicamente, los módulos de extensión necesitan   compilarse con el mismo compilador   que se utilizó para compilar Python.

Martin v. Loewis en el correo electrónico titulado Descargar Visual Studio Express 2008 ahora en python-lista de la lista de correo indica el mismo

  

Python 2.6, 2.7, 3.1 y están construidos   con que la liberación (es decir 2008). Porque   de otra larga tradición, Python   módulos de extensión se deben construir con   la versión mismo compilador (más   específicamente, la versión CRT) como Python   sí mismo. Así que para construir módulos de extensión   para cualquiera de estas versiones, es necesario   tener una copia de VS 2008 o VS 2008   Expreso.

A la luz de las declaraciones anteriores que debe uso VS 2008 si quieres lxml acumulación para Python 2.7 por lo que aunque el establecimiento VS90COMNTOOLS se encarga de la búsqueda de archivos vcvarsall.bat no es la solución.

Una vez dicho esto :) personas tratan de usar CRT de edad avanzada con nuevos compilador:
¿Puedo usar el compilador de Visual Studio 2010 C ++ con biblioteca de ejecución C ++ de Visual Studio 2008?
Cómo hacer cumplir el compilador de C ++ a la versión uso específico CRT?
VS 2008 - Enlace contra C mayor tiempo de ejecución

Me gustaría dar las gracias a Kev Dwyer (por señalar la importancia de la versión de VS que se utiliza) y Stefan Behnel (por dirigirme a distutils como un lugar de negociación con la configuración del compilador) en el hilo Problema construcción lxml bajo Windows - error: No se pudo encontrar vcvarsall.bat en la lista de correo lxml. Me gustaría también agradecer a agronholm de #distutils freenode canal de IRC para la confirmación de que distutils Qué contiene un código que será para el archivo vcvarsall.bat.

Otros consejos

Después de seguir la solución recomendada:

  1. descargar VCForPython27.msi de Microsoft,
  2. instalarlo (Win7, Python (x, y) 2.7.9 32 bits),
  3. entrar / actualizar la variable de entorno VS90COMNTOOLS a     el valor directorio de instalación (C: \ Archivos de programa (x86) \ Common     \ Microsoft \ Visual C ++ para Python \ 9,0)

mi problema todavía existía (quieren construir una extensión de Python en C).

que tenía que hacer los ajustes siguientes 2 sucios Increíblemente, antes de que todo está hecho, ahora trabajo:

  1. Modificar "msvc9compiler.py" en "C: \ python27 \ lib \ distutils" , función find_vcvarsall , ahora a apuntar a "Visual C ++ para Python " en lugar de " VC ".
  2. copiar el fundador directorios bajo "C: \ Archivos de programa (x86) \ Common \ Microsoft \ Visual C ++ para Python \ 9.0 \ " " C: \ Archivos de programa (X86) \ Archivos comunes \ Microsoft \ Visual C ++ para Python \ " (es decir, uno dir Nivel superior).

No se puede decir que estaba haciendo algo mal aquí -. Probablemente

Editar. Mover los directorios de obras porque el problema descrito en este distutils fallo .

  

incluso si se establece VS90COMNTOOLS, msvc9compiler no es capaz de encontrar vcvarsall.bat porque se instala en %installdir%/vcvarsall.bat y no %installdir%/VC/vcvarsall.bat

La solución descrita está utilizando el Visual C ++ símbolo del sistema:

  
      
  1. Introduzca MSVC de comandos de Python pronta

  2.   
  3. SET DISTUTILS_USE_SDK = 1

  4.   
  5. SET MSSDK = 1

  6.   
  7. python.exe setup.py ...

  8.   

Jorj McKie era casi correcta: de hecho la instalación VCForPython27.msi no es suficiente, y sí hay un problema en distutils que le impiden encontrar find_vcvarsall. De hecho, el problema es que no están directamente en distutils, sino en cómo VCForPython27.msi fue empaquetado y donde se coloca vcvarsall.bat (las carpetas de diseño es diferente del SDK VS2008).

Una solución sencilla por su parte esta es parcheado tal vez en Python 2.7.11:. Setuptools uso en lugar de distutils

Otra solución manual si le pegan con distutils:

1) Enter MSVC for Python command prompt
2) SET DISTUTILS_USE_SDK=1
3) SET MSSdk=1
4) you can then build your C extensions: python.exe setup.py ...

Informe de error y solución de Gregory Szorc: http://bugs.python.org/issue23246

Más información y una solución alternativa para el uso de la magia %% Cython dentro IPython: https: // github. com / Cython / Cython / wiki / CythonExtensionsOnWindows

https://github.com/develersrl/gccwinbinaries

he tenido problemas similares. Esto funcionó al instante sin excepción de usar un asistente de instalación y configuración de una preferencia de nada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top