在Mac OS X上使用pip安装pycrypto时出现了"Broken Pipe"错误

29

我正在尝试通过pip在OS X上安装pycrypto(版本2.3)。当编译器尝试编译MD2.c时,我遇到了“Broken pipe”错误。使用easy_install时,我也会遇到非常类似的错误。

这是我遇到的错误:

bash-3.2$ 
bash-3.2$ sudo pip install pycrypto
Password:
Downloading/unpacking pycrypto
  Running setup.py egg_info for package pycrypto
Installing collected packages: pycrypto
  Running setup.py install for pycrypto
    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//cc47qHNI.out (No such file or directory)
    error: command 'gcc-4.2' failed with exit status 1
    Complete output from command /usr/bin/python -c "import setuptools;__file__='/Users/damusin/tmp/pycrypto/pycrypto-2.3/build/pycrypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-W6xQ61-record/install-record.txt:
    running install

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//cc47qHNI.out (No such file or directory)

error: command 'gcc-4.2' failed with exit status 1

----------------------------------------
Command /usr/bin/python -c "import setuptools;__file__='/Users/damusin/tmp/pycrypto/pycrypto-2.3/build/pycrypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-W6xQ61-record/install-record.txt failed with error code 1
Storing complete log in /Users/admin/.pip/pip.log
bash-3.2$ 
bash-3.2$ 

我尝试使用 mac ports 命令 "sudo port install py26-crypto" 安装该软件包。看起来安装很顺利,但在运行“fab”(Fabric)命令时,它告诉我缺少 pycrypto 包。
我尝试使用 YH Wong 在这里推荐的“ARCHFLAGS”命令,但没有成功: https://superuser.com/questions/259278/python-2-6-1-pycrypto-2-3-pypi-package-broken-pipe-during-build 我使用的是 Mac OS X 10.6.7,并且安装了 python 2.6.6 和 XCode。

试试ActivePython(无需自己编译模块):http://code.activestate.com/pypm/pycrypto/ - Sridhar Ratnakumar
2个回答

65

如果您已经安装了Xcode 4,请在调用pipeasy_install之前尝试设置ARCHFLAGS

sudo bash
export ARCHFLAGS='-arch i386 -arch x86_64'
pip ...

问题在于Xcode 4删除了对-arch ppc的支持,但Mac OS X 10.6上的系统Python 2.6希望使用所有三种架构来构建通用C扩展模块。如果您在sudo命令之前定义环境变量,则很可能无法导出到sudo环境。


14
您可以直接写sudo ARCHFLAGS='-arch i386 -arch x86_64' pip ... - LaC
这方面的一些信息可以在官方文档中找到:http://rpy.sourceforge.net/rpy2/doc-2.3/html/overview.html#compiling-on-os-x - Filipe Correia

2

Xcode 5.1

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip2.7 install pycrypto

这对我有用。花了一整天的时间试图找到解决方法。 - domino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接