2013-03-13 65 views
21

Có vẻ như có một số người đã gặp sự cố tương tự, tuy nhiên, sau khi tìm kiếm nhiều, tôi không thể tìm được giải pháp phù hợp với kiến trúc. Tôi đang cố gắng để cài đặt Pycrypto (như là một công ty con của Vải) vô ích.Pycrypto cài đặt lỗi nghiêm trọng: tệp gmp.h không tìm thấy

Tôi đang chạy Mac 10.8.2, python 2.7.3 qua Homebrew và XCode 4.6 - cài đặt bằng pip hoặc easy_install (Tôi đã thử cả hai). Từ những gì tôi có thể nói, vấn đề có thể là liên quan đến phiên bản XCode của tôi hoặc vì các thư viện của tôi. Các công cụ dòng lệnh cho XCode đã được cài đặt và tôi đã thử đặt setenv ARCHFLAGS "-arch i386 -arch x86_64" trong tệp .cshrc của tôi. Tôi cũng đã thử ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer /Developer. Đối với các thư viện, tôi đã thử liên kết chúng qua ln -s /usr/local/lib/libgmp.dylib /usr/lib/libgmp.dylib - nhưng điều đó cũng không hoạt động.

Lỗi luôn giống nhau (xem bên dưới) bất kể góc nào tôi cố gắng. Bất kỳ và tất cả các trợ giúp sẽ được đánh giá cao.

/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 

Các lỗi khi tôi cố gắng gọi Vải:

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 

Trả lời

1

cuối cùng tôi nhận ra rằng gốc rễ của vấn đề của tôi là trong sự không tương thích giữa các phiên bản của vải và Pycrypto. Khi tôi hạ cấp phiên bản Vải thành 1.2.6, tôi không còn gặp lỗi ở trên nữa. Sau đó, tôi đã sử dụng tutorial làm điểm nhảy. Tuy nhiên, mặc dù hướng dẫn và phiên bản cũ hơn của Fabric, tôi vẫn gặp lỗi PyCrypto >= 2.1, !=2.4. Cuối cùng tôi đã cài đặt Pycrypto 2.2 từ nguồn (vì rõ ràng là pip sẽ chỉ cài đặt phiên bản 2.0.1 ngay cả khi chỉ định pip -Iv install pycrypto==2.2 mỗi this và câu 2.6 dẫn đến lỗi gmp.h). Cuối cùng, mọi thứ đều hiệu quả.

2

Đơn giản chỉ cần kết nối gmppylib là không hữu ích vì pycrpto cần phải biên dịch một số tác phẩm C mà sẽ bao gồm gmp.h. Bạn nên cài đặt thư viện GMP có chứa gmp.h. Có vẻ như bạn phải cài đặt GMP trên hệ điều hành Mac của bạn. Hai liên kết sau đây sẽ hữu ích cho bạn.

+0

Thật không may, không có cách nào trong số này hoạt động. Nhưng cảm ơn. – cosmosis

0

Đây là việc sửa chữa mà làm việc cho tôi:

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

Bạn cần phải tạo một liên kết tượng trưng dựa trên tiêu đề cài đặt bao gồm đường dẫn (-I) trong nhưng vụ tai nạn. Ví dụ: mở rộng

xây dựng 'Crypto.PublicKey._fastmath'

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -fno-nghiêm ngặt-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-hệ thống/Ứng dụng/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include -I/Applications/Xcode.app/Nội dung/Nhà phát triển/Nền tảng/MacOSX.platform/Nhà phát triển/SDK/MacOSX10.7.sdk/usr/include -I/Applications/Xcode.app/Nội dung/Nhà phát triển/Nền tảng/MacOSX.platform/Nhà phát triển/SDK/MacOSX10.7.sdk/usr/X11/include -Wno-unused-value - Wno-rỗng-cơ thể -Qunused-arguments -fwrap v -Wall -Wstrict-prototype -std = c99 -O3 -fomit-frame-pointer -Isrc/* -I/usr/include/- * I/usr/local/Cellar/python/2.7.3/Khung/Python.framework/Phiên bản/2.7/bao gồm/python2.7 -c src/_fastmath.c -o build/temp.macosx-10.7-x86_64-2.7/src/_fastmath.o

src/_fastmath.c: 36: 11: lỗi nghiêm trọng: 'gmp.h' tập tin không tìm thấy

4

tôi đã có thể để có được PyCrypto để cài đặt bằng cách sử dụng lệnh sau:

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

Tôi đã cài đặt GMP qua MacPorts, chạy trên OSX 10.8.3 với Python 2.7.2 từ python.org. Trong trường hợp này tôi đang cài đặt vào virtualenv.

tôi nhận được cảnh báo sau khi PyCrypto được sử dụng, nhưng nó vẫn hoạt động:

/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

Nếu bạn sử dụng Homebrew, điều này sẽ làm các trick:

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

Sử dụng env sẽ đảm bảo rằng nó chỉ hoạt động trong thời gian này. Nếu bạn cần cài đặt pycrypto sau đó trong một phiên khác, hãy xuất biến đó.

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

Làm việc hoàn hảo cho tôi, cảm ơn! –

+0

cảm ơn. 'env" CFLAGS = -I/usr/include/gmp -L/usr/lib/gmp "pip install pycrypto' làm việc với tôi trên Solaris 11.3. –

+1

Nó hoạt động. Cảm ơn rất nhiều. Bạn cứu mạng tôi. – harukaeru

Các vấn đề liên quan