पायथन 2.6.1, पाइक्रिप्टो 2.3 पिपी पैकेज: निर्माण के दौरान "टूटा हुआ पाइप"


11

मैं फैब्रिक को स्थापित करने का प्रयास कर रहा हूं, जिसमें pycrypto की आवश्यकता है। पाइक्रिप्टो के लिए निर्माण के दौरान मुझे हमेशा "ब्रोकन पाइप" त्रुटि प्राप्त होती है। मुझे नहीं पता कि समस्या को ठीक करने के लिए कहां से शुरू करें।

मैं मैक ओएस एक्स स्नो लेपर्ड 10.6.6 चला रहा हूं, सभी अपडेट इंस्टॉल किए गए हैं; अजगर 2.6.1; जीसीसी 4.2; XCode 4 (जीसीसी को अद्यतन करने के मामले में)

सटीक त्रुटि है:

$ 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
खैर, समस्या यह है कि यह पीपीसी बाइनरी बनाने की कोशिश कर रहा है। Gcc लाइन में, "-arch ppc" है, जो इसका कारण होगा। हालांकि इसे ठीक करने का कोई विचार नहीं है।
टोनी अर्कल्स

जवाबों:


15

यह एक बेहतर समाधान है जो मैक ओएस एक्स 10.6 पर एक्सकोड कोड 4 का उपयोग करके सभी पायथन सी एक्सटेंशन बिल्डिंग पर सभी पायथन संस्करणों के लिए काम करता है ।

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

इस तरह से आपको setup.pyउन सभी C एक्सटेंशनों के लिए फाइलों के साथ चक्कर नहीं लगाना पड़ेगा जिन्हें आप बनाने की कोशिश कर रहे हैं।


बहुत बढ़िया, धन्यवाद, यह मेरे में अटक गया ~/.zshrc
दुष्ट

सुनिश्चित करें कि आप इसे सूद करते हैं
जॉन

@Jon। वह निर्भर करता है। आप अपने स्वयं के होम डायरेक्टरी पर स्थानीय रूप से पायथन पैकेज स्थापित कर सकते हैं।
वाईएच वोंग

2

जैसा कि टोनी ने बताया कि यह मुद्दा पीपीसी से संबंधित है। XCode 4 ने PPC कोडांतरक को हटा दिया। सेटअप टूल डिफ़ॉल्ट रूप से, i386, ppc और x86_64 द्वारा सभी आर्किटेक्चर के लिए इंस्टॉल करने का प्रयास करता है।

मैंने इस कोड को अपने pycrypto-2.3 setup.py को लाइन 122 और निम्नलिखित में जोड़ा। यह 'पीपीसी' के लिए सेट कंपाइलर विकल्पों को खोजता है और इसे हटाता है और पूर्ववर्ती '-प्रधान' निर्देश '।

    # 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 बेहतर पता लगा सकते हैं कि XCode 4 के साथ 10.6 अब एक लागू लक्ष्य वास्तुकला के रूप में PPC है। इस समस्या को ठीक करने के लिए सुझाव स्वीकार किए जाते हैं।


एक बेहतर उपाय है। संकेत /System/Frameworks/Python.framework/Versions/VERSION/lib/PYTHON_VERSION/distutils/sysconfig.py:customize_compiler के तहत पाया जा सकता है
YH वोंग

1

एक अन्य विकल्प xcode के पिछले संस्करण से पीपीसी असेंबलर्स को वापस कॉपी करना है। आपको केवल स्थान से फ़ोल्डर ppc और ppc64 की प्रतिलिपि बनानी होगी/usr/libexec/gcc/darwin/

मुझे लगता है कि यह भी एक भयानक बदलाव है, लेकिन यह मेरे लिए काम किया है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.