Python 2.6.1, gói pycrypto 2.3 pypi: đã bị hỏng ống trong khi xây dựng


11

Tôi đang cố gắng cài đặt Fabric, yêu cầu pycrypto. Trong quá trình xây dựng cho pycrypto, tôi luôn gặp lỗi "Hỏng ống". Tôi không biết bắt đầu từ đâu để khắc phục vấn đề.

Tôi đang chạy Mac OS X Snow Leopard 10.6.6, tất cả các bản cập nhật đã được cài đặt; Trăn 2.6.1; GCC 4.2; XCode 4 (trong trường hợp đã cập nhật GCC)

Lỗi chính xác là:

$ sudo python setup.py build
Password:
running build
running build_py
running build_ext
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Hash.MD2' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -fwrapv -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch ppc -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/MD2.c -o build/temp.macosx-10.6-universal-2.6/src/MD2.o
/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64
/usr/bin/../libexec/gcc/darwin/i386/as for architecture i386
src/MD2.c:134: fatal error: error writing to -: Broken pipe
compilation terminated.
lipo: can't open input file: /var/tmp//ccfADoXD.out (No such file or directory)
error: command 'gcc-4.2' failed with exit status 1

1
Vấn đề là nó đang cố gắng xây dựng một nhị phân PPC. Trong dòng gcc, nó có "-arch ppc", điều này sẽ gây ra nó. Không có ý tưởng làm thế nào để sửa chữa nó mặc dù.
Tony Arkles

Câu trả lời:


15

Đây là một giải pháp tốt hơn hoạt động cho tất cả các phần mở rộng Python C trên TẤT CẢ các phiên bản Python trên Mac OS X 10.6 bằng XCode 4.

ARCHFLAGS="-arch i386 -arch x86_64" python setup.py build

Bằng cách này, bạn không phải loay hoay với các setup.pytệp cho tất cả các tiện ích mở rộng C mà bạn đang cố gắng xây dựng.


Tuyệt vời, cảm ơn, mắc kẹt điều này vào của tôi ~/.zshrc.
roguesys

Hãy chắc chắn rằng bạn đã sudo cái này
Jon

@Jon. Mà phụ thuộc. Bạn có thể cài đặt các gói Python cục bộ trên thư mục nhà của riêng bạn.
YH Wong

2

Như Tony chỉ ra vấn đề có liên quan đến PPC. XCode 4 đã gỡ bỏ trình biên dịch PPC. Các công cụ thiết lập cố gắng cài đặt cho tất cả các kiến ​​trúc theo mặc định, i386, ppc và x86_64.

Tôi đã thêm mã này vào pycrypto-2.3 setup.py trong dòng 122 và tiếp theo. Thao tác này sẽ tìm kiếm các tùy chọn trình biên dịch đã đặt cho 'ppc' và xóa nó và lệnh '-arch' trước đó.

    # removing PPC flag from compiler options
    index = self.compiler.compiler_so.index('ppc')

    del self.compiler.compiler_so[index]
    del self.compiler.compiler_so[index-1]

Chạy cài đặt sudo python thông thường cài đặt trên tệp đã sửa đổi cài đặt pycrypto mà không gặp sự cố.

Đây là một cách giải quyết tồi tệ, nhưng nên hoạt động ngay bây giờ cho đến khi setuptools có thể phát hiện tốt hơn rằng 10.6 với XCode 4 không còn có PPC như một kiến ​​trúc mục tiêu áp dụng. Đề xuất để khắc phục vấn đề này trên tất cả được chấp nhận.


Có một giải pháp tốt hơn. Có thể tìm thấy gợi ý trong /System/Frameworks/Python.framework/Versions/VERSION/lib/PYTHON_VERSION/distutils/sysconfig.py:customize_compiler
YH Wong

1

Một tùy chọn khác là sao chép lại trình biên dịch ppc từ phiên bản trước của xcode. Bạn chỉ phải sao chép các thư mục ppc và ppc64 từ vị trí/usr/libexec/gcc/darwin/

Tôi nhận ra đó cũng là một cách giải quyết tồi tệ, nhưng nó đã làm việc với tôi!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.