2012-06-07 9 views
6

Zainstalowałem PyCrypto na Windows przez pip, ale nie byłem w stanie zbudować Crypto.PublicKey._fastmath ponieważ GMP nie został znaleziony.Budowanie PyCrypto z fastmath (gmp lub mpir) przez pip na Windows

wiem, że jest to wersja binarna na voidspace ale chciałbym zbudować najnowszą wersję PyCrypto

+0

Która wersja systemu Windows? 32-bitowy lub 64-bitowy? – SquareRootOfTwentyThree

+0

Windows7 64-bit – scherlock

+0

Prostsze rozwiązanie tutaj: http://stackoverflow.com/questions/15432010/exception-while-installing-packages-in-python/30620019#30620019 –

Odpowiedz

5

Poniższy jeden jest sposób, aby osiągnąć swój cel. Istnieją inne, prawdopodobnie lepsze sposoby (np. Oparte na Visual Studio), ale ten działał dla mnie. Ponadto nie używa ona pip.

Wszystkie operacje są wykonywane w wierszu polecenia.

  1. Zainstaluj Mingw, w tym MSYS i zestaw narzędzi programistycznych. Zapewni to dość kompletne środowisko programistyczne typu Unix.
  2. Upewnij się, że pliki binarne Mingw są w zmiennej środowiskowej PATH. Potrzebujesz MinGW\bin i MingGW\msys\1.0\bin.
  3. Pobierz MPIR źródła w katalogu tymczasowym. Ważne jest, abyś robił nie używać 2.5.1 z powodu błędu, który złamie kompilację. 2.5.0 jest w porządku.
  4. Zbuduj bibliotekę MPIR. Jest to dość proste: wykonaj bash configure, a następnie make.
  5. HACK # 1 Skopiuj libmpir.a z mpir-2.5.0\.libs do C:\Python2.7.1\libs. Jest to konieczne, ponieważ distutils jest zepsuty i nie mogłem znaleźć sposobu na przekierowanie go do właściwej lokalizacji biblioteki.
  6. HACK # 2 Edytuj C:\Python2.7.1\Lib\distutils\cygwincompiler.py i usuń wszystkie wystąpienia ciągu znaków -mno-cygwin. Powód jest wyjaśniony here.
  7. Pobierz PyCrypto źródła i rozpakuj je w innym katalogu tymczasowym.
  8. Ustaw zmienną środowiskową na katalog MPIR, który zawiera mpir.h.
  9. HACK 3 Edycja setup.py i dodać następujące linię build_extension sposób:

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

  10. Run bash configure. Powinieneś zobaczyć dwie linie mówiąc:

    sprawdzanie __gmpz_init w -lgmp ... no
    sprawdzanie __gmpz_init w -lmpir ... tak

  11. Execute python setup.py build -c mingw32. Nie powinno być żadnych błędów.
  12. Wykonaj python setup.py test, aby sprawdzić, czy wszystko jest w porządku.
  13. Wykonaj python setup.py install, aby skopiować pliki do lokalnego repozytorium Pythona.
  14. Alternatywnie, uruchom python setup.py bdist_wininst, aby utworzyć instalator.

Naprawdę nienawidzę wszystkich różnych hacków i bardzo chciałbym usłyszeć, czy można ich uniknąć.

+1

Nie musisz robić kroków ** 5 ** i ** 9 ** jeśli w kroku ** 8 ** ustawiłeś zmienne środowiskowe 'CPATH' i' LIBRARY_PATH' na wartości 'CPATH = C: \ ' i 'LIBRARY_PATH = C: \ ' – alldayremix

Powiązane problemy