2013-03-13 2 views
21

Похоже, что есть много людей, у которых была аналогичная проблема, однако после долгих поисков я не смог найти решение, которое работает с моим конкретным архитектура. Я пытаюсь установить Pycrypto (как дочернюю структуру Fabric) безрезультатно.Pycrypto устанавливает фатальную ошибку: gmp.h файл не найден

Я запускаю Mac 10.8.2, python 2.7.3 через Homebrew и XCode 4.6 - установка с помощью pip или easy_install (я пробовал оба). Из того, что я могу сказать, проблема может быть связана с моей версией XCode или из-за моих библиотек. Инструменты командной строки для XCode были установлены, и я попытался разместить setenv ARCHFLAGS "-arch i386 -arch x86_64" в моем файле .cshrc. Я также пробовал ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer /Developer. Что касается библиотек, я попытался связать их через ln -s /usr/local/lib/libgmp.dylib /usr/lib/libgmp.dylib - но это также не сработало.

Ошибка всегда одна и та же (см. Ниже) независимо от того, какой угол я пытаюсь выполнить. Любая помощь будет оценена по достоинству.

/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 

Ошибка при попытке вызвать Ткань:

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 

ответ

1

я, наконец, понял, что корень моей проблемы была в несовместимости между версиями ткани и PyCrypto. Как только я понизил свою версию Fabric до 1.2.6, я больше не получил ошибок выше. Затем я использовал tutorial в качестве точки спрыгивания. Однако, несмотря на учебник и более старую версию Fabric, я все еще получил ошибку PyCrypto >= 2.1, !=2.4. В итоге я установил Pycrypto 2.2 из источника (поскольку, по-видимому, pip установит v. 2.0.1, даже если при определении pip -Iv install pycrypto==2.2 за this и версии 2.6 произошла ошибка gmp.h). Наконец, все сработало.

2

Просто связывая gmppylib не полезно, потому что pycrpto нужно собрать некоторые файлы C, которые будут включать gmp.h. У вас должна быть установлена ​​библиотека GMP, которая будет содержать gmp.h. Кажется, вам нужно установить GMP на Mac OS. Следующие две ссылки должны быть полезны для вас.

+0

К сожалению, ни одна из них не работала. Но спасибо. – cosmosis

0

Вот исправление, работал для меня:

https://medium.com/software-bugs/84afab886a1e

Вам нужно создать символическую ссылку, основанную на заголовке установки включают пути (-I) в но аварии. Пример: расширение

здания 'Crypto.PublicKey._fastmath'

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -fno-строгие ступенчатости -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 -система/Приложения/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include -I/Приложения/Xcode.app/Содержание/Разработчик/Платформы/MacOSX.platform/Developer/SDK/MacOSX10.7.sdk/usr/include -I/Applications/Xcode.app/Содержание/Разработчик/Платформы/MacOSX.platform/Developer/SDK/MacOSX10.7.sdk/usr/X11/include -Wno-unused-value - Wno-empty-body -Qunused-arguments -fwrap v -Wall -Wstrict-prototypes -std = c99 -O3 -fomit-frame-pointer -Isrc/* -I/usr/include/- * I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Версии/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: фатальная ошибка: файл 'gmp.h' не найден

4

я смог PyCrypto установить с помощью следующей команды:

CFLAGS=-I/opt/local/include pip install pycrypto 

меня установлен GMP через MacPorts, работает на OSX 10.8.3 с Python 2.7.2 от python.org. В этом случае я устанавливаю в virtualenv.

Я получаю следующее предупреждение при использовании PyCrypto, но он все еще работает:

/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) 
41

Если вы используете Homebrew, это должно сделать трюк:

brew install gmp 
env "CFLAGS=-I/usr/local/include -L/usr/local/lib" pip install pycrypto 

Использование окр будет гарантировать, что он работает только на этот раз. Если вам нужно установить pycrypto в более позднее время в другом сеансе, экспортируйте вместо этого переменную.

export "CFLAGS=-I/usr/local/include -L/usr/local/lib" 
pip install pycrypto 
+1

Работал отлично для меня, спасибо! –

+0

спасибо. 'env" CFLAGS = -I/usr/include/gmp -L/usr/lib/gmp "pip install pycrypto' работал для меня в Solaris 11.3. –

+1

Это работает. Большое спасибо. Ты спасаешь мою жизнь. – harukaeru

Смежные вопросы