Python 2.6.1, pycrypto 2.3 pypi แพ็คเกจ:“ Broken Pipe” ในระหว่างการสร้าง


11

ฉันกำลังพยายามติดตั้ง Fabric ซึ่งต้องใช้ pycrypto ในระหว่างการสร้าง pycrypto ฉันมักจะได้รับข้อผิดพลาด "Broken Pipe" ฉันไม่รู้ว่าจะเริ่มแก้ไขปัญหาได้ที่ไหน

ฉันใช้ Mac OS X Snow Leopard 10.6.6 ติดตั้งอัปเดตทั้งหมดแล้ว Python 2.6.1; GCC 4.2; XCode 4 (ในกรณีที่อัปเดต GCC)

ข้อผิดพลาดที่แน่นอนคือ:

$ 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
ปัญหาคือว่ามันพยายามที่จะสร้างไบนารี PPC ในบรรทัด gcc มี "-arch ppc" ซึ่งจะทำให้เกิด ไม่รู้ว่าจะแก้ไขอย่างไร
Tony Arkles

คำตอบ:


15

นี่เป็นทางออกที่ดีกว่าที่ใช้งานได้กับการสร้างส่วนขยาย Python C ทั้งหมดในเวอร์ชัน Python ทั้งหมดบน Mac OS X 10.6 โดยใช้ XCode 4

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

ด้วยวิธีนี้คุณไม่ต้องยุ่งกับsetup.pyไฟล์สำหรับส่วนขยาย C ทั้งหมดที่คุณพยายามสร้าง


~/.zshrcยอดเยี่ยมขอบคุณติดอยู่นี้ลงของฉัน
roguesys

ตรวจสอบให้แน่ใจว่าคุณทำสิ่งนี้
Jon

@ จอน ขึ้นอยู่กับว่า คุณสามารถติดตั้งแพ็คเกจ Python แบบโลคัลในโฮมไดเร็กตอรี่ของคุณเอง.
YH วงศ์

2

ในฐานะที่เป็นโทนี่ชี้ให้เห็นปัญหาที่เกี่ยวข้องกับ PPC XCode 4 ลบแอสเซมเบลอร์ PPC ออก เครื่องมือติดตั้งพยายามติดตั้งสำหรับสถาปัตยกรรมทั้งหมดโดยค่าเริ่มต้น i386, ppc และ x86_64

ฉันเพิ่มรหัสนี้ไปยัง pycrypto-2.3 setup.py ในบรรทัด 122 และต่อไปนี้ สิ่งนี้จะค้นหาตัวเลือกคอมไพเลอร์ชุดสำหรับ 'ppc' และลบออกและคำสั่ง '-arch' ที่จำเป็น

    # 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]

เรียกใช้ sudo python setup.py ติดตั้งบนไฟล์ที่แก้ไขแล้วติดตั้ง pycrypto โดยไม่มีปัญหา

นี่เป็นวิธีการแก้ปัญหาที่เลวร้าย แต่ควรใช้งานได้จนถึงตอนนี้จนกว่า setuptools จะสามารถตรวจจับได้ว่า 10.6 กับ XCode 4 ไม่มี PPC เป็นสถาปัตยกรรมเป้าหมาย ข้อเสนอแนะเพื่อแก้ไขปัญหานี้เป็นที่ยอมรับทั้งหมด


มีทางออกที่ดีกว่า คำใบ้สามารถพบได้ใน /System/Frameworks/Python.framework/Versions/VERSION/lib/PYTHON_VERSION/distutils/sysconfig.py:customize_compiler
ยงฮวาวงศ์

1

อีกทางเลือกหนึ่งคือการคัดลอกแอสเซมเบลอร์ ppc จาก xcode เวอร์ชันก่อนหน้า คุณจะต้องคัดลอกโฟลเดอร์ ppc และ ppc64 จากที่ตั้ง/usr/libexec/gcc/darwin/

ฉันรู้ว่านั่นเป็นวิธีการแก้ปัญหาที่แย่มาก แต่มันก็ใช้ได้ผลสำหรับฉัน!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.