如何在CentOS 6上同時安裝Python 2.7和Python 3.3
本文將介紹如何在CentOS 6上安裝Python 2.7和3.3。下面以Python 2.7.6和Python 3.3.5為例進行說明,但本人實測該教程同樣適合於Python3.4.0.
CentOS 6自帶了Python 2.6.6(CentOS 7則自帶了Python 2.7)和壹些非常好用的功能,如yum。但是,註意不要隨便升級自帶的Python以免yum不可用。?新版本將安裝在/usr/local目錄下以避免和自帶的版本沖突。
雖然“我”只在64位的CentOS 6.5進行了嘗試,但該教程應該適用於所有的CentOS 6版本(本人按此教程在CentOS 7上亦成功安裝Python3.4)。
下面的示例命令您最好以root身份運行或者在命令前加sudo賦予權限。但註意,若不是以root身份執行的話,make 與make install最好分開執行,並且都在前面加sudo,連著寫,如sudo make && make install的話會在make install過程中報權限不足問題,因為sudo不作用於&&後面的make install。
安裝前準備
編譯Python之前您最好先安裝壹系列的開發工具和壹些拓展庫,雖然不是必須的,但這樣Python才能依賴這些工具和拓展庫展示它強悍的功能。下面是利用yum進行工具和拓展庫安裝的示例命令,直接copy執行即可(註意部分命令顯示不全,但可以通過移動光標查看和復制)。
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
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python編碼問題歷史悠久,但不用過多關註,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。在Python 2.7中您可以通過在configure時添加選項?--enable-unicode=ucs4?進行配置,而在Python 3.2中是--with-wide-unicode選項。
Shared library(動態***享庫)
目前大部分的Linux系統自帶的Python都是以***享庫的方式編譯的, 此外,某些第三方工具例如mod_wsgi和Blender,沒有Python的***享庫還運行不了,所以,您最好還是把Python編譯成動態***享庫吧。為了以***享庫方式編譯Python,您必須指明***享庫的路徑。您有兩種選擇:
在configure命令後面添加:LDFLAGS="-Wl,-rpath /usr/local/lib"從而將庫路徑直接編譯進Python中。
以記事本方式打開?/etc/ld.so.conf?,然後在文件最後添加新行:/usr/local/lib?。緊接著運行命令?/sbin/ldconfig?更新動態鏈接器。 添加後的文件內容在CentOS 6.5 如下:
/etc/ld.so.conf
1
2
include ld.so.conf.d/*.conf
/usr/local/lib
使用 “make altinstall” 而不是make install
切記,在安裝自定義版本的Python時,?make altinstall?命令是必須的!如果您使用壹般的?make install?命令,呵呵,您將會在解壓編譯的目錄下看到兩個命名壹樣但版本不同的python,這有可能會導致壹些意想不到的bug哦,具體是什麽作者沒說,我也不知道。
下載,編譯,安裝Python
如下命令可用於下載、編譯和安裝Python。註意,如果您打算安裝後手動修改?/etc/ld.so.conf?文件以更新動態鏈接器,那麽下面的 LDFLAGS 參數您就可以去掉了。
1
2
3
4
5
6
7
8
9
10
11
12
13
# Python 2.7.6:
wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tar xf Python-2.7.6.tar.xz
cd Python-2.7.6
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall(此處切記,要麽以root運行,要麽分開執行!)
# Python 3.3.5:
wget http://python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tar xf Python-3.3.5.tar.xz
cd Python-3.3.5
./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall(此處切記,要麽以root運行,要麽分開執行!)
執行上述命令之後,您可以在/usr/local/bin/python2.7?或?/usr/local/bin/python3.3?中找到新安裝的Python。而Python 2.6.6則可能在/usr/bin/python,?/usr/bin/python2?或?/usr/bin/python2.6找到。
下載和安裝Setuptools + pip
Setuptools?早已取代?Distribute?成為Python官方的拓展包管理器,以用於從Python Package Index安裝拓展功能包。?不同版本的Python需要的Setuptools版本不同。建議您也通過Setuptools安裝?pip,它提供了壹些額外在安裝拓展功能包時很有用的功能。
以下的命令可用於安裝最新版Setuptools 和 pip。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# First
get the setup script for Setuptools:
wgethttps://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
# Then
install it for Python 2.7 and/or Python 3.3:
python2.7ez_setup.py
python3.3ez_setup.py
# Now
install pip using the newly installed setuptools:
easy_install-2.7pip
easy_install-3.3pip
# With
pip installed you can now do things like this:
pip2.7install[packagename]
pip2.7install--upgrade[packagename]
pip2.7uninstall[packagename]
安裝的拓展功能包在?/usr/local/lib/pythonX.Y/site-packages/?中可以找到(X.Y?是Python的版本號)。
接下來幹嘛?
如果您使用 Python 2.7,強烈建議您安裝?virtualenv?並學會使用它,它可用於創建獨立的 Python 環境。如果您使用 Python 3.3的話就可以省心些,它已被內置了。
不同的 Python 運行環境(也叫沙盒) 可以有自己的 Python 版本和拓展功能包,就是說不同的Python安裝和運行的目錄不同,也可以為每個版本的Python安裝對應的名稱壹樣但版本不同的拓展包。 這在開發多個功能不同的項目或在同壹個項目中需要用到不同版本的Python是會很有用的。
創建您第壹個獨立的Python環境
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Install
virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7installvirtualenv
virtualenv-2.7my27project
# Use
the built-in pyvenv program in Python 3.3 to create a sandbox called my33project:
pyvenv-3.3my33project
# 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:
sourcemy27project/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:
sourcemy33project/bin/activate
python--version
# This
will show Python 3.3.5
deactivate
當妳使用 virtualenv創建壹個運行沙盒時,它會自動在沙盒環境中為您安裝setuptools和 pip (聽起來不錯,可以還沒嘗試過)。但如果您使用 pyvenv 的話,您就必須自己動手安裝了。也簡單,激活沙盒之後通過運行下載的z_setup.py文件去安裝即可。