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


第五、说明

原文

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