【问题标题】:Reinstalling python on Mac OS 10.6 with a different gcc version在具有不同 gcc 版本的 Mac OS 10.6 上重新安装 python
【发布时间】:2010-08-17 08:31:32
【问题描述】:

我正在尝试安装一个需要运行 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.

有什么方法可以在 GCC 4.2 上重新构建 Python 而不必重新安装我所有的 Python 包?

我的操作系统是 Mac OS 10.6。

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

【问题讨论】:

  • 它是什么包?包中的 C 源代码取决于系统的编译器,而不是编译 python 可执行文件的内容。听起来像是可以修补的软件包中的错误检查。
  • 对不起,太累了,我迟到了。问题在于 distutils,而不是正在构建的包。

标签: python gcc


【解决方案1】:

在当前的 OS X Python 上,Distutils 试图确保 C 扩展模块是使用与 Python 解释器本身相同的 GCC 和 MACOSX_DEPLOYMENT_TARGET (ABI) 构建的。这样可以确保不会与底层系统库发生冲突。

但是,如果您使用的是 OS X 10.6,那么您展示的 Python 版本不是 Apple 提供的 Python 之一,这两种 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。

【讨论】:

【解决方案2】:

这很可能是 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 从哪里获取构建设置。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 2010-12-06
    • 2011-01-25
    相关资源
    最近更新 更多