2011年3月11日 星期五

Mac OSX 10.6 安裝Python 2.6.5 備忘錄

Snow Leopard原本內建的Python 2.6.1在使用urllib的urlopen()時
Python會有crash的風險
官網說,Python2.6.3以後的版本就修正好了的樣子
現在去抓就是Python2.6.5,那就來裝Python2.6.5吧~
測試環境OS,Mac OSX 10.6(Snow Leopard)
抓了官網上的python-2.6.5-macosx10.3-2010-03-24.dmg
安裝完之後發現site-packages不相通
所以原本安裝的module都不能import,淦!
只好一個一個module重裝一遍,2.6.5的site-packages位置在:
/Library/Frameworks/Python.framework/Version/2.6/lib/python2.6/site-packages
進去看果然全是空的。
module重裝到pycurl時,一直報錯丫丫丫丫!
後來同事找出問題點,Mac OSX原本附的Python 2.6.1是x86_64版
但我Download下來的dmg包會安裝成32bit版本
所以改用tar ball包來自行編譯x86_64版本
這個版本:Python 2.6.5 bzipped source tarball(http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2)
$ tar -xvzpf Python-2.6.5.tar.bz2
$ cd Python-2.6.5
$ ./configure –with-universal-arch=x86_64 –enable-universalsdk=/Developer/SDKs/MacOSX10.6.sdk –enable-framework=/Library/Frameworks –with-framework-name=Python2.6.5
這裡configure的參數說明:
–with-universal-arch=x86_64 (指定編譯成x86_64,如果不給這個參數,預設是i386,也就是32-bit版)
README底下的說明是用–with-universal-archs,但在執行時又報錯,要我用–with-universal-arch
後來發現,如果要用–with-universal-archs,其後的參數要用intel(i368和x86_64混合)
不然就要用–with-universal-arch,並指定’x86_64′
–enable-universalsdk=/Developer/SDKs/MacOSX10.6.sdk (指定OSX的SDK版本,這裡採用OSX 10.6)
–enable-framework=/Library/Frameworks (指定安裝在/Library/Frameworks路徑底下)
–with-framework-name=Python2.6.5 (指定安裝在/Library/Frameworks路徑底下的目錄名稱)
因為Python 2.6.1和Python 2.6.5(i386或x86_64)都是Python2.6,所以用Python2.6.5來區隔一下
$ make
$ sudo make install
雖然make install這裡,README有建議不要用sudo(superuser)來執行,但是權限上會有寫入的問題
還是得sudo一下,嘖嘖。
安裝完之後再到使用者的家目錄底下($ cd ~/),修改一下.base_profile
將原本指向舊Python的路徑改成新的Python路徑
這是我的:
# Setting PATH for MacPython 2.6
# The orginal version is saved in .bash_profile.pysave
# PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:${PATH}" (<這舊的)
PATH="/Library/Frameworks/Python2.6.5.framework/Versions/2.6/bin:${PATH}" (<這新的)
export PATH
儲存之後,關掉Terminal再進Terminal執行python
就是新的python2.6.5環境啦~

reference: http://chibakuma.net/blog/?p=107

沒有留言:

wibiya widget