在Mac OS 10.6上使用不同的gcc版本重新安装python
我想安装一个需要运行gcc 4.2的Python包。我的gcc正确指向GCC-4.2,也就是在Mac OS 10.6上使用不同的gcc版本重新安装python
$ 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)
然而,我的蟒蛇是建立使用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。
在当前的OS X Pythons上,Distutils试图确保C扩展模块是使用与Python解释器本身相同的GCC和MACOSX_DEPLOYMENT_TARGET
(ABI)构建的。这可以确保不会与底层系统库发生冲突。
但是,如果您使用的是OS X 10.6,那么您展示的Python版本不是Apple提供的Pythons之一,其中的均为使用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。
谢谢!这固定了它。 – 2010-08-17 18:17:31
@NedDeily我已经发布了此答案的后续问题。你介意看一下吗? http://stackoverflow.com/q/14720702/1337422 – sgarza62 2013-02-06 02:41:25
这很可能是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从获得其构建设置。
谢谢;这很有帮助。 – 2010-08-17 18:17:52
它是什么软件包?包中的C源代码取决于系统的编译器,而不是编译时使用的Python可执行文件。听起来像是可以修补的软件包中的错误检查。 – Andrew 2010-08-17 08:38:49
pycrypto。谢谢! – 2010-08-17 08:45:47
对不起,这很累,我迟到了。这个问题将与distutils,而不是正在建立的包。 – Andrew 2010-08-17 09:22:16