Python 2.6.1, pycrypto 2.3 pypi 패키지 : 빌드 중“깨진 파이프”


11

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

1
문제는 PPC 바이너리를 빌드하려고한다는 것입니다. gcc 행에는 "-arch ppc"가 있으며 이로 인해 문제가 발생합니다. 그래도 고칠 방법을 모릅니다.
Tony Arkles

답변:


15

이것은 XCode 4를 사용하여 Mac OS X 10.6의 모든 Python 버전에서 모든 Python C 확장 빌드에 작동하는 더 나은 솔루션입니다 .

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

이렇게하면 setup.py빌드하려는 모든 C 확장 파일에 대해 파일 을 다룰 필요가 없습니다 .


감사합니다, 이것을 내 안에 붙 ~/.zshrc였습니다.
roguesys

당신이 이것을 sudo
Jon

@ 존. 조건에 따라서. 자신의 홈 디렉토리에 Python 패키지를 로컬로 설치할 수 있습니다.
YH Wong

2

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가 적용 가능한 대상 아키텍처가 아님을 더 잘 감지 할 수있을 때까지 작동해야합니다. 이 문제를 해결하기위한 제안이 모두 허용됩니다.


더 나은 해결책이 있습니다. 힌트는 /System/Frameworks/Python.framework/Versions/VERSION/lib/PYTHON_VERSION/distutils/sysconfig.py:customize_compiler
YH Wong

1

또 다른 옵션은 이전 버전의 xcode에서 ppc 어셈블러를 다시 복사하는 것입니다. 위치에서 ppc 및 ppc64 폴더 만 복사하면됩니다./usr/libexec/gcc/darwin/

나는 그것이 끔찍한 해결 방법이라는 것을 알고 있지만 그것은 나를 위해 일했다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.