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

3 ответа3

15

Это лучшее решение, которое работает для всех расширений Python C на всех версиях Python в Mac OS X 10.6 с использованием XCode 4.

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

Таким образом, вам не нужно копаться в файлах setup.py для всех расширений C, которые вы пытаетесь создать.

2

Как указал Тони, проблема связана с КПП. XCode 4 убрал ассемблер PPC. Программа установки пытается установить для всех архитектур по умолчанию i386, ppc и x86_64.

Я добавил этот код в мой pycrypto-2.3 setup.py в строке 122 и далее. При этом в параметрах компилятора set выполняется поиск '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 в качестве применимой целевой архитектуры. Предложения по устранению этой проблемы принимаются.

1

Другой вариант - скопировать ppc-ассемблеры из предыдущей версии xcode. Вам нужно только скопировать папки ppc и ppc64 из папки /usr/libexec/gcc/darwin/

Я понимаю, что это тоже ужасный обходной путь, но он сработал для меня!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .