it-swarm-ja.com

Python 2.6.1、pycrypto 2.3 pypiパッケージ:ビルド中の「壊れたパイプ」

Pycryptoを必要とするFabricをインストールしようとしています。 pycryptoのビルド中に、常に「パイプの破損」エラーが発生します。問題の解決をどこから始めればよいのかわかりません。

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
11
jlindenbaum

これは、すべてのPython C拡張機能の構築[〜#〜] all [〜#〜] Python = XCode4を使用するMacOS X10.6のバージョン。

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

このようにして、構築しようとしているすべてのC拡張機能のsetup.pyファイルをいじくり回す必要はありません。

15
Y.H Wong

Tonyが指摘したように、この問題はPPC関連です。XCode4はPPCアセンブラーを削除しました。セットアップツールは、デフォルトですべてのアーキテクチャ、i386、ppc、およびx86_64。

このコードをpycrypto-2.3setup.pyの122行目以降に追加しました。これにより、設定されたコンパイラオプションで「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 installを、変更されたファイルにインストールされたpycryptoに問題なく実行します。

これはひどい回避策ですが、setuptoolsがXCode4を使用した10.6に適用可能なターゲットアーキテクチャとしてPPCがないことをより適切に検出できるようになるまでは今のところ機能するはずです。この問題を修正するための提案すべて受け入れられます。

2
jlindenbaum

もう1つのオプションは、以前のバージョンのxcodeからppcアセンブラーをコピーバックすることです。 /usr/libexec/gcc/darwin/の場所からppcフォルダーとppc64フォルダーをコピーするだけです。

それもひどい回避策だと思いますが、それは私にとってはうまくいきました!

1
Marcelo Guinea