Próbuję zainstalować Fabric, który wymaga pycrypto. Podczas kompilacji pycrypto zawsze pojawia się błąd „Broken Pipe”. Nie wiem od czego zacząć, aby rozwiązać problem.
Korzystam z systemu Mac OS X Snow Leopard 10.6.6, wszystkie zainstalowane aktualizacje; Python 2.6.1; GCC 4.2; XCode 4 (w przypadku aktualizacji GCC)
Dokładny błąd to:
$ 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
osx-snow-leopard
python
gcc
jlindenbaum
źródło
źródło
Odpowiedzi:
Jest to lepsze rozwiązanie, które działa we wszystkich rozszerzeniach języka Python C we WSZYSTKICH wersjach języka Python w systemie Mac OS X 10.6 przy użyciu XCode 4.
W ten sposób nie musisz grzebać w
setup.py
plikach dla wszystkich rozszerzeń C, które próbujesz zbudować.źródło
~/.zshrc
.Jak zauważył Tony, problem dotyczy PPC. XCode 4 usunął asembler PPC. Narzędzia instalacyjne domyślnie próbują zainstalować dla wszystkich architektur, i386, ppc i x86_64.
Dodałem ten kod do mojego pycrypto-2.3 setup.py w linii 122 i kolejnych. Przeszukuje ustawione opcje kompilatora pod kątem „ppc” i usuwa je oraz poprzednią instrukcję „-arch”.
Uruchamianie zwykłej instalacji sudo python setup.py na zmodyfikowanym pliku pycrypto bez problemu.
Jest to okropne obejście, ale powinno działać na razie, dopóki setuptools nie będą w stanie lepiej wykryć, że 10.6 z XCode 4 nie ma już PPC jako odpowiedniej architektury docelowej. Sugestie rozwiązania tego problemu są akceptowane.
źródło
Inną opcją jest skopiowanie asemblerów ppc z poprzedniej wersji xcode. Musisz tylko skopiować foldery ppc i ppc64 z lokalizacji
/usr/libexec/gcc/darwin/
Rozumiem, że to również okropne obejście, ale zadziałało dla mnie!
źródło