python setup.py 的编译器选项错误
我正在我的Mac上安装matplotlib这个库。发现setup.py这个文件里的设置不太对,特别是isysroot这个选项指向了一个旧的SDK。
那么,setup.py是从哪里获取这些信息的呢?我该怎么修复这个问题呢?
我现在用的是MacOS 10.5.8,XCode 3.1.2和Python 2.6(默认配置是2.5)。
2 个回答
setup.py
这个文件会从你安装的 Python 中获取信息,具体来说,它是通过标准库里的 distutils 包来获取的,至少会用到其中的一些功能。
distutils.ccompiler 提供了一个叫 CCompiler
的抽象基类,用来描述你的 C 编译器。对于 gcc 来说,通常具体的类是在 distutils.unixcompiler 里,我觉得你可以从这里开始检查,特别是针对 Mac 系统。
如果你想了解在一个完美运行的 Mac OS X 10.5 上,配合次新版本的 XCode(我不能安装最新的,因为它只支持 10.6 及以上版本)是怎样的,我很乐意分享我的安装信息——不过我觉得如果你能告诉我们你安装的是什么 Mac OS X 版本、什么 XCode 版本等等,会更有帮助!:-)
另外,知道你使用的是系统自带的 Python、macports 版本,还是从 python.org 安装的(还有,具体是哪个版本;-)也很重要——因为每种安装方式可能会有自己的问题,而且这些问题通常是不同的!-)
我猜你是在10.5系统上用python.org的安装包安装了2.6版本。在这种情况下,设置的标志是正确的,你不需要去修改它们。python.org的安装包是用所谓的10.4u SDK构建的,目标是10.3,这样一个安装包就可以在10.3.9到10.6(甚至可能更高)之间的Mac OS X系统上使用。最近发布的Python 2.6版本已经修复了问题,确保在OS X上构建扩展模块时,C编译器的选项与底层的Python相匹配。所以如果需要的话,你得确保从Xcode包中安装10.4u SDK(可以在OS X的安装光盘/DVD上找到,或者从Apple Developer Connection网站下载)。这样做还会确保你使用的是gcc-4.0,这也是10.5系统的默认编译器。