2010-08-17 89 views
1

我想安裝一個需要運行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。

+0

它是什麼軟件包?包中的C源代碼取決於系統的編譯器,而不是編譯時使用的Python可執行文件。聽起來像是可以修補的軟件包中的錯誤檢查。 – Andrew 2010-08-17 08:38:49

+0

pycrypto。謝謝! – 2010-08-17 08:45:47

+0

對不起,這很累,我遲到了。這個問題將與distutils,而不是正在建立的包。 – Andrew 2010-08-17 09:22:16

回答

3

在當前的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。

+0

謝謝!這固定了它。 – 2010-08-17 18:17:31

+0

@NedDeily我已經發布了此答案的後續問題。你介意看一下嗎? http://stackoverflow.com/q/14720702/1337422 – sgarza62 2013-02-06 02:41:25

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從獲得其構建設置。

+0

謝謝;這很有幫助。 – 2010-08-17 18:17:52