python osx-mountain-lion gmp pycrypto

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