python easy_install在Mac OS X上的“assembler for architecture ppc not installed”失败

bash-3.2$ sudo easy_install appscript Password: Searching for appscript Reading http://pypi.python.org/simple/appscript/ Reading http://appscript.sourceforge.net Best match: appscript 1.0.0 Downloading http://pypi.python.org/packages/source/a/appscript/appscript-1.0.0.tar.gz#md5=6619b637037ea0f391f45870c13ae38a Processing appscript-1.0.0.tar.gz Running appscript-1.0.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-C4d1az/appscript-1.0.0/egg-dist-tmp-yVTHww /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 

我是一个很大的noob在这个东西(我已经学会了使用python和unix了一下,但我从来没有处理安装。)早些时候,我得到一个错误,相关的gcc-4.2没有被发现,我发现一些build议重新安装XCode的post。 我去了4.0(不好的select?),现在我明白了。 我不知道该怎么做。

升级到XCode 4后,这发生在我身上; 我没有时间来弄清楚在升级过程中出了什么问题(或者这是否是预期的行为),但下面的解决方法适用于我:

 sudo env ARCHFLAGS="-arch i386" easy_install whatever 

ARCHFLAGS技巧也适用于setup.py

 env ARCHFLAGS="-arch i386 -arch x86_64" python setup.py install 

我发现了另一个解决这个问题的办法。 原来XCode4仍然有ppc汇编器。 你只需要一个符号链接在正确的地方:

 $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin $ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin 

修复了在雪豹上安装XCode4的问题。

编辑 :我试过其他解决scheme,在某些情况下工作,但总是遇到一个软件包,硬编码PPC的要求。 提供PPC汇编程序一劳永逸地解决了所有这些问题。

对我来说,关键是ppc汇编器,而不是ARCHFLAGS的东西。 但是,上面的build议是行不通的。 我没有这些地方的文件。 但是随着一些修补和p around,我发现我确实在/usr/bin/as有了ppc的声明。 我第一次尝试sudo ln -s /usr/bin/as /usr/libexec/as/ppc/as ,但失败了(关于无法fork进程的东西… ??)。 所以我最终只是做了sudo cp /usr/bin/as /usr/libexec/as/ppc/as ,而且工作得很好(我想我也必须沿着这条path做一些sudo mkdir )。

在Mac OS X 10.6上使用系统Pythons,您将需要安装Apple Xcode Developer Tools中的gcc-4.2来构build扩展模块,就像使用Appscript一样。 其他产品可能需要Xcode gcc-4.0,所以你应该安装它们两个。 它们并存就好了。