零、說明
1.在這裏沒有指定python的次級版本及centos次級版本,基本上沒有區別。
2.在centos6自帶的是python2.6.6,當python解釋器版本升級後很多系統應用將無法使用,比如yum。一個簡單易行的方法是把新版本的python安裝在/usr/local 目錄下,這樣一來新版本和老版本就可以共存了。
3.這個指南可以應用於我現在用的環境(CentOS 6.5 64 位),可能也適用於CentOS 5,文檔持續更新。
4.以root用戶執行以下所有命令,或者用sudo執行。
一、準備工作
爲了能夠編譯Python您需要首先安裝開發工具和一些額外的庫。
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
幾件需要注意的事
0)x和y是版本系數,在運行命令式將其替換成最新版本號。如3.x.y修改爲3.4.1,3.x修改爲3.4等
1)統一的字符編碼
Python在字符編碼問題上有一段久遠而複雜的歷史。沒有特殊的原因我想還是讓你的Python支持utf-32. 在Python3.3的時候,unicode已被重寫,字符串將被自動採用最佳編碼方式存儲。在接下來python2在configure命令中加上
--enable-unicode=ucs4
在python3加上
--with-wide-unicode
2)共享庫
我們應該把python編譯爲一個共享庫,所有linux版本都是這樣編譯的。否則有一些第三方工具比如mod_wsgi 和 Blender 將無法工作。爲了將Python編譯爲共享庫這兒爲您提供兩個選擇:
在configure命令添加如下命令就能把其編譯到可執行的路徑:
LDFLAGS="-Wl,-rpath /usr/local/lib"
用編輯器打開文件/etc/ld.so.conf ,添加如下路徑/usr/local/lib. 爲了更新您需要運行
/sbin/ldconfig
3)使用“make altinstall” 防止出現一些問題
在你安裝Python的自定義版本的時候使用make altinstall非常重要。如果您使用普通的make install 在文件系統中將會存在兩個Python版本,而其名稱卻都是python,這將導致非常難以診斷的問題。
二、下載、編譯和安裝Python
使用如下命令,如果您在之前就已修改過ld.so.conf文件的話那麼就可以刪除LDFLAGS參數。
# Python 2.x.y:
wget http://python.org/ftp/python/2.x.y/Python-2.x.y.tar.xz
tar xf Python-2.7.6.tar.xz
cd Python-2.x.y
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
# Python 3.x.y:
wget http://python.org/ftp/python/3.x.y/Python-3.x.y.tar.xz
tar xf Python-3.x.y.tar.xz
cd Python-3.x.y
./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
運行完以上命令後Python解釋器就可以可以通過如下路徑調用了
/usr/local/bin/python2.x
/usr/local/bin/python3.x
原來系統自帶的python2.6仍然可以使用,三個命令中的任何一個都可以
/usr/bin/python
/usr/bin/python2
/usr/bin/python2.6
三、下載和安裝setuptools+pip
setuptools已經取代distribute成爲官方包管理器。 系統上的每一個Python解釋器都需要自己的setuptools。我也建議你安裝pip,因爲它是建立在setuptools之上的,而且它能爲您管理包提供額外的功能。
運行如下命令安裝最新版本的setuptools和pip
# First get the setup script for Setuptools:
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
# Then install it for Python 2.x and/or Python 3.x:
python2.x ez_setup.py
python3.x ez_setup.py
# Now install pip using the newly installed setuptools:
easy_install-2.x pip
easy_install-3.x pip
# With pip installed you can now do things like this:
pip2.x install [packagename]
pip2.x install --upgrade [packagename]
pip2.x uninstall [packagename]
以後的安裝包路徑將會是
/usr/local/lib/pythonX.Y/site-packages/
然後呢?
如果您用Python2.7的話我強烈建議您安裝virtualenv。它能夠爲您創建獨立的Python環境。如果您使用Python3.x您就不需要安裝了,因爲3.x版本已經內置了virtualenv。
每一個獨立的Python環境(也可以叫做沙盤)擁有其自己的Python版本和package版本。當您在不同項目中需要運行不同版本是時非常有用。
第四、試用一下
# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7 install virtualenv
virtualenv-2.7 my27project
# Use the built-in pyvenv program in Python 3.3 to create a sandbox called my33project:
pyvenv-3.3 my33project
# Check the system Python interpreter version:
python --version
# This will show Python 2.6.6
# Activate the my27project sandbox and check the version of the default Python interpreter in it:
source my27project/bin/activate
python --version
# This will show Python 2.7.6
deactivate
# Activate the my33project sandbox and check the version of the default Python interpreter in it:
source my33project/bin/activate
python --version
# This will show Python 3.3.5
deactivate
使用virtualenv創建sandbox時會在sandbox中自動安裝setuptools和pip。如果你使用pyvenv那麼你必須自己安裝。您可以在激活了sandbox後再次使用ez_setup.py文件。
第五、說明