2012-06-07 26 views
6

Instalé PyCrypto en Windows a través de pip pero no pude construir Crypto.PublicKey._fastmath porque no se encontró GMP.Creando PyCrypto con fastmath (gmp o mpir) a través de pip en Windows

sé que hay una versión binaria en voidspace pero me gustaría construir la versión más reciente de PyCrypto

+0

¿Qué versión de Windows? ¿32 bits o 64 bits? – SquareRootOfTwentyThree

+0

Windows7 64-bit – scherlock

+0

Una solución más simple aquí: http://stackoverflow.com/questions/15432010/exception-while-installing-packages-in-python/30620019#30620019 –

Respuesta

5

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.

  1. Instalar Mingw, incluido MSYS y el kit de herramientas de desarrollo. Esto le dará un entorno de desarrollo similar al de Unix bastante completo.
  2. Asegúrese de que los binarios Mingw estén en la variable de entorno PATH. Necesita MinGW\bin y MingGW\msys\1.0\bin.
  3. 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.
  4. Cree la biblioteca MPIR. Esto es bastante sencillo: ejecuta bash configure seguido de make.
  5. 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.
  6. 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.
  7. Descargue PyCrypto fuentes y descomprímalas en otro directorio temporal.
  8. Establezca la variable de entorno CPPFLAGS en el directorio MPIR, que contiene mpir.h.
  9. HACK 3 Editar setup.py y añadir la siguiente línea en build_extension método:

    self .__ add_compiler_option (os.environ [ 'CPPFLAGS'])

  10. 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í

  11. Ejecutar python setup.py build -c mingw32. No deberías ver errores
  12. Ejecute python setup.py test para verificar que todo esté bien.
  13. Ejecute python setup.py install para copiar los archivos en su repositorio local de Python.
  14. 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.

+1

No tiene que hacer los pasos ** 5 ** y ** 9 ** si en el paso ** 8 ** estableces las variables de entorno 'CPATH' y' LIBRARY_PATH' en los valores 'CPATH = C: \ ' y 'LIBRARY_PATH = C: \ ' – alldayremix

Cuestiones relacionadas