Перейти к содержимому

Python 2.6.1, pycrypto 2.3, пакет pypi: «Сломанная труба» во время сборки

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 
5 938 просмотров
jlindenbaum спросил 15 лет назад
J 178

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, которые вы пытаетесь создать.

Отлично, спасибо, воткнул это в мой ~ / .zshrc.

roguesys · 15 лет назад · 0

Убедитесь, что вы sudo это

Jon · 15 лет назад · 0

@ Джон. Это зависит от. Вы можете установить пакеты Python локально в своем домашнем каталоге.

Y.H Wong · 15 лет назад · 0
Y.H Wong ответил 15 лет назад
Y 266
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 в качестве применимой целевой архитектуры. Предложения по устранению этой проблемы принимаются.

Есть лучшее решение. Подсказку можно найти в /System/Frameworks/Python.framework/Versions/VERSION/lib/PYTHON_VERSION/distutils/sysconfig.py:customize_compiler

Y.H Wong · 15 лет назад · 0
jlindenbaum ответил 15 лет назад
J 178
1

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

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

Marcelo Guinea ответил 15 лет назад
M 11