La siguiente es una manera de lograr su objetivo. Hay otras formas, probablemente mejores (por ejemplo, basadas en Visual Studio), pero esta me ha funcionado. Además, no usa pip
.
Todas las operaciones se llevan a cabo en un símbolo del sistema.
- Instalar Mingw, incluido MSYS y el kit de herramientas de desarrollo. Esto le dará un entorno de desarrollo similar al de Unix bastante completo.
- Asegúrese de que los binarios Mingw estén en la variable de entorno PATH. Necesita
MinGW\bin
y MingGW\msys\1.0\bin
.
- Descargue MPIR fuentes en un directorio temporal. Es importante que haga no use 2.5.1 debido a un error que romperá la compilación. 2.5.0 está bien.
- Cree la biblioteca MPIR. Esto es bastante sencillo: ejecuta
bash configure
seguido de make
.
- HACK # 1 Copie
libmpir.a
desde mpir-2.5.0\.libs
en C:\Python2.7.1\libs
. Esto es necesario porque distutils
está roto y no pude encontrar una manera de dirigirlo a la ubicación correcta de la biblioteca.
- HACK # 2 Editar
C:\Python2.7.1\Lib\distutils\cygwincompiler.py
y eliminar cualquier aparición de la cadena -mno-cygwin
. La razón se explica here.
- Descargue PyCrypto fuentes y descomprímalas en otro directorio temporal.
- Establezca la variable de entorno
CPPFLAGS
en el directorio MPIR, que contiene mpir.h
.
HACK 3 Editar setup.py
y añadir la siguiente línea en build_extension
método:
self .__ add_compiler_option (os.environ [ 'CPPFLAGS'])
Run bash configure
. Debería ver dos líneas diciendo:
comprobación de __gmpz_init en -lgmp ... no
comprobación de __gmpz_init en -lmpir ... sí
- Ejecutar
python setup.py build -c mingw32
. No deberías ver errores
- Ejecute
python setup.py test
para verificar que todo esté bien.
- Ejecute
python setup.py install
para copiar los archivos en su repositorio local de Python.
- Como alternativa, ejecute
python setup.py bdist_wininst
para crear un instalador.
Realmente odio todos los diversos hacks, y me encantaría saber si se pueden evitar.
¿Qué versión de Windows? ¿32 bits o 64 bits? – SquareRootOfTwentyThree
Windows7 64-bit – scherlock
Una solución más simple aquí: http://stackoverflow.com/questions/15432010/exception-while-installing-packages-in-python/30620019#30620019 –