instal - Solución "advertencia: no se encuentra la biblioteca GMP o MPIR; No se está generando el error Crypto.PublickKey._fastmath "en Python 2.7 con CentOS 6.4
pip install python centos (5)
Estoy ejecutando un servidor CentOS 6.4 con Python 2.7 (instalado a través del script PythonBrew)
Tengo gmp instalado a través de ''yum install gmp'' y python-devel instalado a través de ''yum install python-devel'' (pero es para python 2.6 series)
Estoy intentando instalar pycrypto en mi servidor, pero me está dando
warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath
¿Hay alguna manera de hacer que pip ''reconozca'' mi instalación gmp?
Gracias: D
Aquí está un paso a paso que acabo de hacer en mi servidor CentOS (la secuencia asume que no eres root):
INSTALACIÓN LIBGMP
En primer lugar, configure e instale libgmp en algún lugar de su directorio de inicio, de la siguiente manera:
./configure prefix=$HOME
make
make install prefix=$HOME
Esto creará un directorio ~ / lib, un ~ / include y un directorio ~ / share si aún no existe.
Luego, agregue la siguiente línea a su .bashrc:
export LD_LIBRARY_PATH=$HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH
Haga un ". ~ / .Bashrc" para hacer cumplir sus cambios.
PYCRYPTO CONSTRUIR E INSTALAR
Tenemos que lidiar con el proceso de instalación manualmente. En primer lugar, podemos descargar pycrypto de la siguiente manera:
entrar en un directorio donde almacena sus fuentes:
cd ~ / src
descargar el archivo fuente de pycrypto:
"curl -o pycrypto.tar.gz" https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.tar.gz#md5=88dad0a270d1fe83a39e0467a66a22bb "
descomprimir + untar archivo:
gunzip pycrypto.tar.gz tar xvf pycrypto.tar
Entonces tenemos que engañar a la configuración "un poco":
cd pycrypto-26
./configure --includedir=$HOME/include
Edite el archivo cd src / config.h y modifique los valores para las definiciones:
#define HAVE_DECL_MPZ_POWM 0 en lugar de 1
#define HAVE_DECL_MPZ_POWM_SEC 1 en lugar de 0
#define HAVE_LIBGMP 1 en lugar de 0
Luego, edite el archivo setup.py buscando la palabra clave "_fastmath" y asegúrese de que la declaración de Extensión () se vea como se muestra a continuación:
Extension("Crypto.PublicKey._fastmath", include_dirs=[''/home/<yourhome>/include'',''src/'',''/usr/include/''], library_dirs=[''/home/<yourhome>/lib''], libraries=[''gmp''], sources=["src/_fastmath.c"]),
Finalmente, construya pycrypto con:
python setup.py build
Deberías ver en algún lugar de la traza la siguiente línea:
...
building ''Crypto.PublicKey._fastmath'' extension
...
Luego puedes hacer una "instalación de python setup.py" o, si así lo prefieres, pip:
cd ..
pip install ./pycrypto-2.6
Entonces no debería obtener ningún error al ejecutar las siguientes líneas desde python:
>>> from Crypto.PublicKey import _fastmath
>>> import Crypto.Random
>>> _fastmath.HAVE_DECL_MPZ_POWM_SEC
1
Obtuve el error anterior al intentar instalar Fabric en el nivel del sistema en Centos 6.4 usando pip. (Tela utiliza pycrypto).
warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath
Así es como lo conseguí trabajando:
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
Probablemente necesites tener instalado gmp-devel. Esto le da a pycrypto los encabezados que necesita compilar usando libgmp.
En Ubuntu, solo tuve libgmp10 instalado. Presioné la misma advertencia cuando intento instalar pycrypto. Después de instalar el paquete de Ubuntu libgmp-dev, la advertencia desapareció y el script de compilación indicó que estaba usando la extensión _fastmath.
Si ya instaló pycrypto sin _fastmath, puede reinstalarlo con el indicador -I, por ejemplo
sudo pip install -I pycrypto
Solo para cualquiera que se encuentre con esto en los últimos años, ya que estoy seguro de que hay / habrá algunos. Pude solucionar fácilmente este problema en mi instalación Debian Jessie ejecutando el siguiente comando.
$ sudo apt-get install python-dev
A continuación, intente su instalación de nuevo. En mi caso, estaba tratando de instalar ansible a través de pip con el siguiente comando. También para aquellos que puedan venir a través de esta publicación con el mismo escenario.
$ sudo pip install ansible
La salida ahora debería ser la siguiente.
Successfully installed pycrypto
Cleaning up...
Espero que esto ayude a alguien en el camino! - justin
Te faltan las bibliotecas de C ++ para construir esto. Instale VS 2017 https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017