2013-03-13 22 views
21

Wygląda na to, że istnieje wiele osób, które miały podobny problem, jednak po wielu poszukiwaniach nie udało mi się znaleźć rozwiązania, które pasowałoby do mojego konkretnego architektura. Próbuję zainstalować Pycrypto (jako filię Fabric) bez skutku.Pycrypto zainstaluj błąd krytyczny: plik gmp.h nie został znaleziony

Używam Mac 10.8.2, python 2.7.3 przez Homebrew i XCode 4.6 - instaluję z pip lub easy_install (próbowałem obu). Z tego co wiem, problem może dotyczyć zarówno mojej wersji XCode, jak i moich bibliotek. Narzędzia wiersza poleceń dla XCode zostały zainstalowane i próbowałem umieścić setenv ARCHFLAGS "-arch i386 -arch x86_64" w moim pliku .cshrc. Próbowałem również ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer /Developer. Jeśli chodzi o biblioteki, próbowałem połączyć je przez ln -s /usr/local/lib/libgmp.dylib /usr/lib/libgmp.dylib - ale to też nie zadziałało.

Błąd jest zawsze taki sam (patrz poniżej) niezależnie od wybranego kąta. Każda pomoc zostanie doceniona.

/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 

Błąd podczas próby wywołania Tkanina:

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 

Odpowiedz

1

I w końcu zrozumiał, że źródłem mojego problemu było niezgodności między wersjami tkaniny i Pycrypto. Po zmniejszeniu wersji Fabric do wersji 1.2.6 nie mam już powyższych błędów. Następnie użyłem tutorial jako punktu skoku. Jednak pomimo samouczka i starszej wersji Fabric nadal mam błąd PyCrypto >= 2.1, !=2.4. Ostatecznie zainstalowałem Pycrypto 2.2 ze źródła (ponieważ podobno pip zainstaluje tylko wersję 2.0.1, nawet jeśli oznaczenie pip -Iv install pycrypto==2.2 na this i v. 2.6 spowoduje błąd gmp.h). W końcu wszystko działało.

2

prostu łącząc gmppylib nie jest pomocne, ponieważ pycrpto musi skompilować niektóre pliki C, która będzie obejmować gmp.h. Powinieneś mieć zainstalowaną bibliotekę GMP, która będzie zawierała gmp.h. Wygląda na to, że musisz zainstalować GMP na Mac OS. Poniższe dwa linki powinny ci pomóc.

+0

Niestety, żaden z nich nie zadziałał. Ale dzięki. – cosmosis

0

Oto dylemat, który pracował dla mnie:

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

Musisz utworzyć dowiązania w oparciu o nagłówku instalacji zawierać ścieżkę (-I) ale w katastrofie. Przykład: rozszerzenie

budynku 'Crypto.PublicKey._fastmath'

/Applications/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 /Aplikacje/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -isystem/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include -I/Applications/Xcode.app/Spis treści/Deweloper/Platformy/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include -I/Applications/Xcode.app/Spis treści/Deweloper/Platformy/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/X11/includes -Wno-unused-value - Wno-empty-body -Qunused-arguments -fwrap v -Wall -Wstrict-prototypy -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 kompilacja/temp.MacOSX-10.7-x86_64-2.7/src/_fastmath.o

src/_fastmath.c: 36: 11: błąd krytyczny: 'gmp.h' file not found

4

udało mi się dostać PyCrypto zainstalować za pomocą następującego polecenia:

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

mam zainstalowane GMP poprzez DarwinPorts, działa na OSX 10.8.3 z Python 2.7.2 z python.org. W tym przypadku instaluję się w virtualenv.

zrobić uzyskać następujące ostrzeżenie, gdy jest używany PyCrypto, ale nadal działa:

/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

Jeśli używasz Homebrew, to powinno załatwić sprawę:

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

Korzystanie env zagwarantuje działa tylko tym razem. Jeśli musisz zainstalować program pycrypto później w innej sesji, wyeksportuj zmienną.

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

Sprawdziło się idealnie dla mnie, dzięki! –

+0

dzięki. 'env" CFLAGS = -I/usr/include/gmp -L/usr/lib/gmp "pip install pycrypto' pracował dla mnie w systemie Solaris 11.3. –

+1

To działa. Wielkie dzięki. Ratujesz moje życie. – harukaeru

Powiązane problemy