Python 2.6.1, pycrypto 2.3 pypi paketi: İnşa sırasında “Kırık Boru”


11

Pycrypto gerektiren Fabric'i kurmaya çalışıyorum. Pycrypto derlemesi sırasında her zaman bir "Kırık Boru" hatası alıyorum. Sorunu düzeltmeye nereden başlayacağımı bilmiyorum.

Mac OS X Snow Leopard 10.6.6 kullanıyorum, tüm güncellemeler yüklü; Python 2.6.1; GCC 4.2; XCode 4 (GCC'nin güncellenmesi durumunda)

Kesin hata:

$ 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
Sorun şu ki bir PPC ikili dosyası oluşturmaya çalışıyor. Gcc satırında, buna neden olabilecek "-arch ppc" vardır. Gerçi nasıl düzeltileceği hakkında bir fikrim yok.
Tony Arkles

Yanıtlar:


15

Bu, XCode 4 kullanan Mac OS X 10.6'daki ALL Python sürümlerindeki tüm Python C eklentisi binaları için çalışan daha iyi bir çözümdür .

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

Bu şekilde setup.py, oluşturmaya çalıştığınız tüm C uzantılarının dosyaları ile uğraşmanıza gerek kalmaz .


Mükemmel, teşekkürler, bunu benim içine soktu ~/.zshrc.
roguesys

Bunu sudo yaptığınızdan emin olun
Jon

@Jon. Bu bağlıdır. Python paketlerini yerel olarak kendi ana dizininize kurabilirsiniz.
YH Wong

2

Tony'nin işaret ettiği gibi, konu PPC ile ilgilidir. XCode 4, PPC birleştiricisini kaldırdı. Kurulum araçları varsayılan olarak tüm mimariler için yüklemeye çalışır, i386, ppc ve x86_64.

Bu kodu, 122. satırdaki ve sonrasındaki pycrypto-2.3 setup.py dosyasına ekledim. Bu, set derleyici seçeneklerini 'ppc' için arar ve onu ve önceki '-arch' komutunu 'kaldırır.

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

Her zamanki sudo python setup.py kurulumunu, değiştirilmiş dosya yüklü pycrypto'da sorunsuz olarak çalıştırma.

Bu korkunç bir çözümdür, ancak kurulum araçları XCode 4 ile 10.6'nın artık uygulanabilir bir hedef mimari olarak PPC'ye sahip olmadığını daha iyi tespit edene kadar şimdilik çalışmalıdır. Bu sorunu herkes için çözme önerileri kabul edilir.


Daha iyi bir çözüm var. İpucu /System/Frameworks/Python.framework/Versions/VERSION/lib/PYTHON_VERSION/distutils/sysconfig.py:customize_compiler
YH Wong

1

Başka bir seçenek de ppc derleyicilerini önceki bir xcode sürümünden kopyalamaktır. Yalnızca ppc ve ppc64 klasörlerini konumdan kopyalamanız gerekir/usr/libexec/gcc/darwin/

Bunun da korkunç bir çözüm olduğunu biliyorum, ama benim için işe yaradı!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.