2012-06-07 7 views
6

Ho installato PyCrypto su Windows tramite pip ma non sono riuscito a creare Crypto.PublicKey._fastmath perché GMP non è stato trovato.Creazione di PyCrypto con fastmath (gmp o mpir) tramite pip su Windows

So che c'è una versione binaria su voidspace ma vorrei costruire l'ultima versione di pycrypto

+0

Quale versione di Windows? 32 bit o 64 bit? – SquareRootOfTwentyThree

+0

Windows7 64-bit – scherlock

+0

Una soluzione più semplice qui: http://stackoverflow.com/questions/15432010/exception-while-installing-packages-in-python/30620019#30620019 –

risposta

5

Di seguito uno è un modo per raggiungere il tuo obiettivo. Ci sono altri, probabilmente modi migliori (ad esempio basati su Visual Studio), ma questo ha funzionato per me. Inoltre, non utilizza pip.

Tutte le operazioni vengono eseguite al prompt dei comandi.

  1. Installare Mingw, inclusi MSYS e il toolkit di sviluppo. Questo ti darà un ambiente di sviluppo simile a Unix abbastanza completo.
  2. Verificare che i file binari Mingw siano nella variabile di ambiente PATH. Hai bisogno di MinGW\bin e MingGW\msys\1.0\bin.
  3. Scarica le fonti MPIR in una directory temporanea. È importante eseguire non utilizzare 2.5.1 a causa di un bug che interromperà la generazione. 2.5.0 va bene.
  4. Costruisci la libreria MPIR. Questo è abbastanza semplice: eseguire bash configure seguito da make.
  5. HACK # 1 Copia libmpir.a da mpir-2.5.0\.libs a C:\Python2.7.1\libs. Ciò è necessario perché distutils è danneggiato e non sono riuscito a trovare un modo per indirizzarlo al percorso della libreria corretto.
  6. HACK # 2 Modificare C:\Python2.7.1\Lib\distutils\cygwincompiler.py e rimuovere qualsiasi occorrenza della stringa -mno-cygwin. Il motivo è spiegato here.
  7. Scaricare PyCrypto fonti e decomprimerle in un'altra directory temporanea.
  8. Impostare la variabile di ambiente CPPFLAGS nella directory MPIR, che contiene mpir.h.
  9. HACK 3 Modifica setup.py e aggiungere la seguente riga nel build_extension metodo:

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

  10. Run bash configure. Si dovrebbe vedere due linee dicendo:

    controllando per __gmpz_init in -lgmp ... no
    controllando per __gmpz_init in -lmpir ... sì

  11. Execute python setup.py build -c mingw32. Non dovresti vedere errori.
  12. Eseguire python setup.py test per verificare che tutto funzioni correttamente.
  13. Esegui python setup.py install per copiare i file nel repository Python locale.
  14. In alternativa, eseguire python setup.py bdist_wininst per creare un programma di installazione.

Odio davvero tutti i vari hack, e mi piacerebbe sapere se possono essere evitati.

+1

Non è necessario eseguire passaggi ** 5 ** e ** 9 ** se al passo ** 8 ** imposti le variabili di ambiente 'CPATH' e' LIBRARY_PATH' ai valori 'CPATH = C: \ ' e 'LIBRARY_PATH = C: \ ' – alldayremix