在Mac OS 10.6上使用不同的gcc版本重新安装Python

1 投票
2 回答
1263 浏览
提问于 2025-04-16 02:54

我正在尝试安装一个需要使用gcc 4.2的Python包。我的gcc设置得很好,指向了gcc-4.2,也就是说:

$ gcc -v
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5664~38/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5664)

但是,我的Python是用gcc 4.0构建的,也就是说:

$ python
Python 2.5.4 (r254:67917, Dec 23 2008, 15:47:06) 
[GCC 4.0.1 (Apple Inc. build 5363)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

有没有办法让我在不重新安装所有Python包的情况下,使用gcc 4.2重新构建Python呢?

我的操作系统是Mac OS 10.6。

注意:仅仅把gcc指向gcc-4.0对我没有帮助——我需要使用gcc-4.2。

2 个回答

1

这很可能是distutils的问题,你不需要重新编译Python,也不需要重新安装任何软件包。

你有没有检查过你的CC环境变量设置成了什么版本?它可能仍然是4.0。你可以试试:

export CC=gcc-4.2
python setup.py build

你也可以看看:

/Library/Frameworks/Python.framework/Versions/Current/lib/python2.5/config/Makefile

这是distutils获取构建设置的地方。

3

在现在的 OS X 系统上的 Python 中,Distutils 会尽量确保 C 扩展模块是用和 Python 解释器相同的 GCC 版本和 MACOSX_DEPLOYMENT_TARGET(ABI)来构建的。这样做是为了避免和系统库之间出现冲突。

但是,如果你使用的是 OS X 10.6,那么你显示的 Python 版本并不是苹果提供的版本,因为苹果的版本都是用 gcc-4.2 构建的。很可能你还安装了一个较旧的 python.org 2.5 版本,并且它的链接在 /usr/local/bin 目录下。

# OS X 10.6.4
$ /usr/bin/python -c 'import sys;print(sys.version)'
2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)]
$ /usr/bin/python2.6 -c 'import sys;print(sys.version)'  # same as above
2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)]
$ /usr/bin/python2.5 -c 'import sys;print(sys.version)'
2.5.4 (r254:67916, Feb 11 2010, 00:50:55) 
[GCC 4.2.1 (Apple Inc. build 5646)]
$ /usr/local/bin/python2.5 -c 'import sys;print(sys.version);print(sys.executable)'
2.5.4 (r254:67917, Dec 23 2008, 14:57:27) 
[GCC 4.0.1 (Apple Computer, Inc. build 5363)]
/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/Python

which python 命令可以告诉你正在使用哪个 Python。你可以使用想要的解释器的绝对路径,或者修改你的 shell PATH,或者删除旧的 Python 2.5。

撰写回答