La construcción de lxml para Python 2.7 en Windows
-
27-09-2019 - |
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
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
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:
- descargar VCForPython27.msi de Microsoft,
- instalarlo (Win7, Python (x, y) 2.7.9 32 bits),
- 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:
- Modificar "msvc9compiler.py" en "C: \ python27 \ lib \ distutils" , función find_vcvarsall , ahora a apuntar a "Visual C ++ para Python " en lugar de " VC ".
- 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:
Introduzca MSVC de comandos de Python pronta ??p>
SET DISTUTILS_USE_SDK = 1
SET MSSDK = 1
python.exe setup.py ...
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.