在centos6中同時使用python2和python3

零、說明

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文件。


第五、說明

原文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章