python - Error grave de instalación de Pycrypto: archivo gmp.h no encontrado
osx-mountain-lion (5)
Parece que hay un número de personas que han tenido un problema similar, sin embargo, después de muchas búsquedas no he podido encontrar una solución que funcione con mi arquitectura particular. Estoy intentando instalar Pycrypto (como una subsidiaria de Fabric) sin éxito.
Estoy ejecutando Mac 10.8.2, Python 2.7.3 a través de Homebrew, y XCode 4.6 - instalando con pip o easy_install (he probado ambos). Por lo que puedo decir, el problema podría ser con respecto a mi versión de XCode o debido a mis bibliotecas. Se han instalado las herramientas de línea de comandos para XCode y he intentado colocar setenv ARCHFLAGS "-arch i386 -arch x86_64"
en mi archivo .cshrc. También he probado ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer /Developer
. En cuanto a las bibliotecas, he intentado vincularlas a través de ln -s /usr/local/lib/libgmp.dylib /usr/lib/libgmp.dylib
, pero eso tampoco funcionó.
El error es siempre el mismo (ver más abajo) no importa qué ángulo intento. Cualquier ayuda sería apreciada.
/usr/local/share/python% pip install pycrypto
Downloading/unpacking pycrypto
Running setup.py egg_info for package pycrypto
Installing collected packages: pycrypto
Running setup.py install for pycrypto
building ''Crypto.PublicKey._fastmath'' extension
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -pipe -mmacosx-version-min=10.8 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -Wno-unused-value -Wno-empty-body -Qunused-arguments -fwrapv -Wall -Wstrict-prototypes -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_fastmath.c -o build/temp.macosx-10.8-intel-2.7/src/_fastmath.o
src/_fastmath.c:36:11: fatal error: ''gmp.h'' file not found
# include <gmp.h>
^
1 error generated.
error: command ''/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang'' failed with exit status 1
Complete output from command /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c "import setuptools;__file__=''/var/folders/ym/v8l23q_x2xz_qhx3m84n6ym00005fr/T/pip-build/pycrypto/setup.py'';exec(compile(open(__file__).read().replace(''/r/n'', ''/n''), __file__, ''exec''))" install --record /var/folders/ym/v8l23q_x2xz_qhx3m84n6ym00005fr/T/pip-Xb7nGV-record/install-record.txt --single-version-externally-managed:
running install
running build
running build_py
running build_ext
running build_configure
building ''Crypto.PublicKey._fastmath'' extension
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -pipe -mmacosx-version-min=10.8 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -Wno-unused-value -Wno-empty-body -Qunused-arguments -fwrapv -Wall -Wstrict-prototypes -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_fastmath.c -o build/temp.macosx-10.8-intel-2.7/src/_fastmath.o
src/_fastmath.c:36:11: fatal error: ''gmp.h'' file not found
# include <gmp.h>
^
1 error generated.
error: command ''/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain /usr/bin/clang'' failed with exit status 1
----------------------------------------
Command /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c "import setuptools;__file__=''/var/folders/ym/v8l23q_x2xz_qhx3m84n6ym00005fr/T/pip-build/pycrypto/setup.py'';exec(compile(open(__file__).read().replace(''/r/n'', ''/n''), __file__, ''exec''))" install --record /var/folders/ym/v8l23q_x2xz_qhx3m84n6ym00005fr/T/pip-Xb7nGV-record/install-record.txt --single-version-externally-managed failed with error code 1 in /var/folders/ym/v8l23q_x2xz_qhx3m84n6ym00005fr/T/pip-build/pycrypto
Storing complete log in /Users/me/.pip/pip.log
El error cuando intento llamar a Fabric:
Traceback (most recent call last):
File "/usr/local/share/python/fab", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg/pkg_resources.py", line 2815, in <module>
working_set.require(__requires__)
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg/pkg_resources.py", line 690, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg/pkg_resources.py", line 588, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pycrypto>=2.1,!=2.4
Aquí está la solución que funcionó para mí:
https://medium.com/software-bugs/84afab886a1e
Debe crear un enlace simbólico basado en la ruta de inclusión del encabezado de instalación (-I) en pero se bloquea. Ejemplo:
construcción de la extensión ''Crypto.PublicKey._fastmath''
/Aplicaciones/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -pipe -march = native -mmacosx-version-min = 10.7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Propiedades/propiedades/personales/personales/personales/personales/Especiales .7.sdk / usr / include -I / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer / SDKs / MacOSX10.7.sdk / usr / include -I / Applications / Xcode.app / Contents /Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/X11/include -Wno-unused-value -Wno-empty-body -Qunused-argument -fwrapv -Wall -Wstrict-prototypes -std = c99 -O3 -fomit-frame-pointer -Isrc / * -I / usr / include / - * I / usr / local / Cellar / python / 2.7.3 / Frameworks / Python.framework / Versions / 2.7 / include / python2 .7 -c src / _fastmath.c -o build / temp.macosx-10.7-x86_64-2.7 / src / _fastmath.o
src / _fastmath.c: 36: 11: error fatal: no se encontró el archivo ''gmp.h''
Finalmente me di cuenta de que la raíz de mi problema estaba en una incompatibilidad entre las versiones de Fabric y Pycrypto. Una vez que bajé mi versión de Fabric a 1.2.6, ya no recibí los errores anteriores. Luego, utilicé el tutorial como punto de partida. Sin embargo, a pesar del tutorial y la versión anterior de Fabric, todavía recibí el PyCrypto >= 2.1, !=2.4
. Eventualmente instalé Pycrypto 2.2 desde la fuente (ya que aparentemente pip
solo instalará v. 2.0.1 incluso cuando designe pip -Iv install pycrypto==2.2
por this y v. 2.6 resultó en el error gmp.h
). Finalmente, todo funcionó.
Pude hacer que PyCrypto se instale usando el siguiente comando:
CFLAGS=-I/opt/local/include pip install pycrypto
Tengo GMP instalado a través de MacPorts, que se ejecuta en OSX 10.8.3 con Python 2.7.2 de python.org. En este caso estoy instalando en un virtualenv.
Recibo la siguiente advertencia cuando se usa PyCrypto, pero todavía funciona:
/Users/me/.virtualenvs/blah/lib/python2.7/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
_warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
Si usas Homebrew, esto debería hacer el truco:
brew install gmp
env "CFLAGS=-I/usr/local/include -L/usr/local/lib" pip install pycrypto
El uso de env garantizará que funcione solo esta vez. Si necesita instalar pycrypto más tarde en otra sesión, exporte la variable en su lugar.
export "CFLAGS=-I/usr/local/include -L/usr/local/lib"
pip install pycrypto
Simplemente enlazar gmppylib no es útil porque pycrpto necesita compilar algunos archivos C que incluirán gmp.h. Debe tener instalada la biblioteca GMP que contendrá gmp.h. Parece que tienes que instalar GMP en tu Mac OS. Los siguientes dos enlaces deben ser útiles para usted.