2013-06-26 33 views
16

Używam serwera CentOS 6.4 z Pythona 2.7 (zainstalowany przez skrypt PythonBrew)Fixing "ostrzeżenie: GMP lub biblioteki MPIR nie znaleziono, a nie budowanie Crypto.PublickKey._fastmath" błąd na Pythonie 2.7 z CentOS 6.4

Mam zainstalowany GMp przez 'yum install gmp' i python-devel zainstalowany przez 'yum install python-devel' (ale jest to dla Pythona 2.6)

Próbuję zainstalować pycrypto na moim serwerze, ale to daje ja

warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath 

Czy jest jakiś wa y sprawić, żeby pip "rozpoznał" moją instalację gmp?

Dzięki: D

Odpowiedz

5

Prawdopodobnie trzeba zainstalowany GMP-devel, too. Daje to pycrypto nagłówków, które musi zbudować przy użyciu libgmp.

W systemie Ubuntu zainstalowałem tylko bibliotekę libgmp10. Trafiłem tym samym ostrzeżeniem podczas próby zainstalowania pycrypto. Po zainstalowaniu pakietu libgmp-dev w systemie Ubuntu ostrzeżenie zniknęło, a skrypt kompilacji wskazał, że korzystał z rozszerzenia _fastmath.

Jeśli zainstalowałeś już pycrypto bez _fastmath, możesz zainstalować go ponownie z flagą -I, np.

sudo pip install -I pycrypto

7

Oto krok po kroku ja właśnie składa się na moim serwerze CentOS (sekwencja zakłada, że ​​nie jesteś root):

LIBGMP INSTALL

po pierwsze, konfiguracja i instalacja libgmp gdzieś w katalogu domowym, co następuje:

./configure prefix=$HOME 
make 
make install prefix=$HOME 

To stworzy ~/lib, a ~/include i a// katalog, jeśli jeszcze nie istnieje.

Następnie należy dodać następujący wiersz do .bashrc:

export LD_LIBRARY_PATH=$HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH 

zrobic aby wymusić zmiany "~/.bashrc.".

PYCRYPTO BUILD & INSTALL

Musimy radzić sobie z procesem zainstalować ręcznie. Po pierwsze, możemy pobrać pycrypto następująco:

Następnie musimy oszukiwać konfigurację "trochę":

cd pycrypto-26 
./configure --includedir=$HOME/include 
  • Edytuj plik cd src/config.h d zmiany wartości definicji :

    #define HAVE_DECL_MPZ_POWM 0 zamiast 1

    #define HAVE_DECL_MPZ_POWM_SEC 1 zamiast 0

    #define HAVE_LIBGMP 1 zamiast 0

  • następnie zmodyfikować plik setup.py, wyszukując słowo kluczowe "_fastmath" i upewnij się, że deklaracja rozszerzenia() wygląda następująco:

    Extension("Crypto.PublicKey._fastmath", 
          include_dirs=['/home/<yourhome>/include','src/','/usr/include/'], 
          library_dirs=['/home/<yourhome>/lib'], 
          libraries=['gmp'], 
          sources=["src/_fastmath.c"]), 
    

Wreszcie, budować pycrypto z:

python setup.py build 

powinien pojawić się gdzieś w ślad następujący wiersz:

... 
building 'Crypto.PublicKey._fastmath' extension 
... 

Następnie można zrobić "python setup.py install" lub , jeśli lubisz mnie, wolisz pip:

cd .. 
pip install ./pycrypto-2.6 

Następnie powinieneś dostać brak błędu podczas wykonywania następujących linii z python:

>>> from Crypto.PublicKey import _fastmath 
>>> import Crypto.Random 
>>> _fastmath.HAVE_DECL_MPZ_POWM_SEC 
1 
8

Mam powyższy błąd podczas próby instalacji Fabric na poziomie systemu na Centos 6.4 za pomocą pip. (Tkanina używa pycrypto).

warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath 

To jak mam to działa:

yum install gmp-devel 
sudo pip uninstall ecdsa pycrypto paramiko fabric 
# clear out the pip build dirs 
rm -rf /tmp/pip-* 
# make sure the directory containing libgmp.so.3 is on the python path 
export LD_LIBRARY_PATH="/usr/lib64:$LD_LIBRARY_PATH" 
pip install fabric 
3

Wystarczy dla każdego, kto biegnie w poprzek to w ostatnich latach, jak jestem pewien, że są/będą pewne. Byłem w stanie łatwo naprawić ten problem na mojej instalacji Debiana Jessie, uruchamiając następujące polecenie.

$ sudo apt-get install python-dev 

Następnie spróbuj zainstalować ponownie. W moim przypadku próbowałem zainstalować ansible przez pip za pomocą następującego polecenia. Również dla osób, które mogą natknąć się na ten post z tym samym scenariuszem.

$ sudo pip install ansible 

Dane wyjściowe powinny być następujące.

Mam nadzieję, że pomoże to komuś w drodze! - justin