pycrypto가 필요한 Fabric을 설치하려고합니다. pycrypto 빌드 중에는 항상 “Broken Pipe”오류가 발생합니다. 문제를 해결하기 위해 어디서부터 시작해야할지 모르겠습니다.
모든 업데이트가 설치된 Mac OS X Snow Leopard 10.6.6을 실행하고 있습니다. 파이썬 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
답변
이것은 XCode 4를 사용하여 Mac OS X 10.6의 모든 Python 버전에서 모든 Python C 확장 빌드에 작동하는 더 나은 솔루션입니다 .
ARCHFLAGS="-arch i386 -arch x86_64" python setup.py build
이렇게하면 setup.py
빌드하려는 모든 C 확장 파일에 대해 파일 을 다룰 필요가 없습니다 .
답변
Tony가 지적한 바와 같이 문제는 PPC 관련입니다. XCode 4는 PPC 어셈블러를 제거했습니다. 설정 도구는 기본적으로 i386, ppc 및 x86_64의 모든 아키텍처에 대해 설치를 시도합니다.
이 코드를 122 행의 pycrypto-2.3 setup.py에 추가했습니다. 이렇게하면 ‘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]
pycrypto가 설치된 수정 된 파일에서 일반적인 sudo python setup.py 설치를 문제없이 실행합니다.
이것은 끔찍한 해결 방법이지만 setuptools가 XCode 4를 사용하는 10.6에 더 이상 PPC가 적용 가능한 대상 아키텍처가 아님을 더 잘 감지 할 수있을 때까지 작동해야합니다. 이 문제를 해결하기위한 제안이 모두 허용됩니다.
답변
또 다른 옵션은 이전 버전의 xcode에서 ppc 어셈블러를 다시 복사하는 것입니다. 위치에서 ppc 및 ppc64 폴더 만 복사하면됩니다./usr/libexec/gcc/darwin/
나는 그것이 끔찍한 해결 방법이라는 것을 알고 있지만 그것은 나를 위해 일했다!