Python 2.6.1,pycrypto 2.3 pypi包:构建过程中的“Broken Pipe”


11

我正在尝试安装Fabric,这需要pycrypto。在构建pycrypto期间,我总是收到“Broken Pipe”错误。我不知道从哪里开始解决这个问题。

我正在运行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
好吧,问题是它正在尝试构建一个PPC二进制文件。在gcc行中,它有“-arch ppc”,这将导致它。不知道怎么解决它。
Tony Arkles 2011年

Answers:


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 2011年

确保你sudo this
Jon

@乔恩。那要看。您可以在自己的主目录中本地安装Python包。
YH Wong

2

正如托尼所指出的那样,这个问题与PPC有关。XCode 4删除了PPC汇编程序。默认情况下,安装工具会尝试为所有体系结构安装,i386,ppc和x86_64。

我将此代码添加到第122行及以下的pycrypto-2.3 setup.py中。这会在set ppcle选项中搜索'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不再将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/

我认识到这也是一个糟糕的解决方法,但它对我有用!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.