web-dev-qa-db-fra.com

Correction "Avertissement: bibliothèque GMP ou MPIR introuvable; erreur de construction de Crypto.PublickKey._fastmath" sur Python 2.7 avec CentOS 6.4

J'utilise un serveur CentOS 6.4 avec Python 2.7 (installé via le script PythonBrew)

J'ai installé gmp via 'yum install gmp' Et python-devel installé via 'yum install python-devel' (mais c'est pour python 2.6 series)

J'essaie d'installer pycrypto sur mon serveur, mais ça me donne

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

Est-il possible de faire pip 'reconnaître' mon installation gmp?

Merci: D

16
user269334

J'ai eu l'erreur ci-dessus lorsque j'ai essayé d'installer Fabric au niveau du système sur Centos 6.4 à l'aide de pip. (Fabric utilise pycrypto). 

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

Voici comment je l'ai fait fonctionner:

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 
8
Joe J

Voici une étape par étape que je viens de créer sur mon serveur CentOS (la séquence suppose que vous n'êtes pas root):

LIBGMP INSTALL

Tout d’abord, installez et installez libgmp quelque part dans votre répertoire personnel, comme suit:

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

Cela créera un répertoire ~/lib, un répertoire ~/include et un répertoire ~/share s'il n'existe pas déjà.

Ensuite, ajoutez la ligne suivante à votre fichier .bashrc:

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

Faites un ". ~/.Bashrc" pour appliquer vos modifications.

PYCRYPTO BUILD & INSTALL

Nous devons traiter manuellement le processus d’installation . Premièrement, nous pouvons télécharger pycrypto comme suit:

Ensuite, nous devons tromper la configuration "un peu":

cd pycrypto-26
./configure --includedir=$HOME/include
  • Editez le fichier cd src/config.h et modifiez les valeurs pour les définitions

    #define HAVE_DECL_MPZ_POWM 0 au lieu de 1

    #define HAVE_DECL_MPZ_POWM_SEC 1 au lieu de 0

    #define HAVE_LIBGMP 1 au lieu de 0

  • Editez ensuite le fichier setup.py en recherchant le mot clé "_fastmath" Et assurez-vous que la déclaration Extension () ressemble à ce qui suit:

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

Enfin, construisez pycrypto avec:

python setup.py build

Vous devriez voir quelque part dans la trace la ligne suivante:

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

Vous pouvez ensuite faire une "installation de python setup.py" ou, si comme moi, vous préférez le pip:

cd ..
pip install ./pycrypto-2.6

Dans ce cas, vous ne devriez pas avoir d'erreur lors de l'exécution des lignes suivantes à partir de python:

>>> from Crypto.PublicKey import _fastmath
>>> import Crypto.Random
>>> _fastmath.HAVE_DECL_MPZ_POWM_SEC
1
7
lai

Vous devez probablement également installer gmp-devel. Ceci donne à pycrypto les en-têtes dont il a besoin pour construire avec libgmp.

Sur Ubuntu, je n'avais que libgmp10 installé. Je rencontre le même avertissement lorsque j'essaie d'installer pycrypto. Après l’installation du paquet Ubuntu libgmp-dev, l’avertissement a disparu et le script de construction a indiqué qu’il utilisait l’extension _fastmath.

Si vous avez déjà installé pycrypto sans _fastmath, vous pouvez le réinstaller avec l’option -I, par exemple.

Sudo pip install -I pycrypto

5
Paul

Juste pour tous ceux qui ont connu cela au cours des dernières années, car j'en suis sûr, il y en aura/il y en aura. J'ai pu résoudre facilement ce problème sur mon installation Debian Jessie en exécutant la commande suivante. 

$ Sudo apt-get install python-dev

Ensuite, essayez à nouveau votre installation. Dans mon cas, j'essayais d'installer ansible via pip avec la commande suivante. Aussi pour ceux de pouvoir trouver ce post avec le même scénario.  

$ Sudo pip install ansible

La sortie devrait maintenant être la suivante. 

Successfully installed pycrypto
Cleaning up...

J'espère que cela aide quelqu'un sur la route! - Justin

3
Justin Rush

Il vous manque les bibliothèques C++ pour construire cela. Installer VS 2017 https://visualstudio.Microsoft.com/downloads/#build-tools-for-visual-studio-2017

0
advdev