Python 2.6.1, pacchetto pypi pycrypto 2.3: "Broken Pipe" durante la compilazione


11

Sto tentando di installare Fabric, che richiede pycrypto. Durante la compilazione di pycrypto ricevo sempre un errore "Broken Pipe". Non so da dove iniziare per risolvere il problema.

Sto eseguendo Mac OS X Snow Leopard 10.6.6, tutti gli aggiornamenti installati; Python 2.6.1; GCC 4.2; XCode 4 (nel caso in cui GCC aggiornato)

L'errore esatto è:

$ 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
Bene, il problema è che sta cercando di creare un binario PPC. Nella riga gcc, ha "-arch ppc", che lo causerebbe. Non ho idea di come risolverlo però.
Tony Arkles,

Risposte:


15

Questa è una soluzione migliore che funziona per tutte le estensioni di Python C basate su TUTTE le versioni di Python su Mac OS X 10.6 usando XCode 4.

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

In questo modo non devi preoccuparti dei setup.pyfile per tutte le estensioni C che stai cercando di creare.


Eccellente, grazie, infilato questo nel mio ~/.zshrc.
Roguesys,

Assicurati di farlo
Jon

@ Jon. Dipende. Puoi installare i pacchetti Python localmente nella tua home directory.
YH Wong,

2

Come ha sottolineato Tony, il problema è legato al PPC. XCode 4 ha rimosso l'assemblatore PPC. Gli strumenti di installazione tentano di installare per tutte le architetture per impostazione predefinita, i386, ppc e x86_64.

Ho aggiunto questo codice al mio setup.py pycrypto-2.3 nella riga 122 e seguenti. Questo cerca le opzioni del compilatore impostate per 'ppc' e lo rimuove e le precedenti istruzioni '-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]

Eseguendo la solita installazione sudo python setup.py sul file modificato installato pycrypto senza problemi.

Questa è una soluzione terribile, ma per ora dovrebbe funzionare fino a quando setuptools non sarà in grado di rilevare meglio che 10.6 con XCode 4 non ha più PPC come architettura di destinazione applicabile. Sono accettati suggerimenti per risolvere questo problema.


C'è una soluzione migliore. Il suggerimento è disponibile in /System/Frameworks/Python.framework/Versions/VERSION/lib/PYTHON_VERSION/distutils/sysconfig.py:customize_compiler
YH Wong

1

Un'altra opzione è quella di copiare nuovamente gli assemblatori di ppc da una versione precedente di xcode. Devi solo copiare le cartelle ppc e ppc64 dalla posizione/usr/libexec/gcc/darwin/

Riconosco che è anche una terribile soluzione, ma ha funzionato per me!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.