Python 2.6.1, пакунок pycrypto 2.3 pypi: “Broken Pipe” під час збирання


11

Я намагаюся встановити Fabric, для якого потрібен pycrypto. Під час збірки для pycrypto я завжди отримую помилку "Зламана труба". Я не знаю, з чого почати виправляти проблему.

Я працюю на 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

1
Ну, проблема в тому, що вона намагається побудувати бінарний КПП. У рядку gcc є "-arch ppc", який би спричиняв це. Не знаю, як це виправити.
Тоні Арклес

Відповіді:


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

Переконайтесь, що ви судо це
Jon

@Jon. Це залежить. Ви можете встановити пакети Python локально у власному домашньому каталозі.
YH Wong

2

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

Я додав цей код до своєї програми pycrypto-2.3 setup.py у рядку 122 і далі. Тут здійснюється пошук параметрів компілятора для '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 більше не має КПП як застосованої цільової архітектури. Пропозиції щодо вирішення цієї проблеми над усіма приймаються.


Є краще рішення. Підказку можна знайти в /System/Frameworks/Python.framework/Versions/VERSION/lib/PYTHON_VERSION/distutils/sysconfig.py:customize_compiler
YH Wong

1

Інший варіант - скопіювати назад збирачів ppc з попередньої версії xcode. Вам потрібно лише скопіювати папки ppc та ppc64 з місця/usr/libexec/gcc/darwin/

Я усвідомлюю, що це теж жахливе рішення, але це спрацювало для мене!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.