如何在CentOS6上安装Python2.7和Python3.3
如何在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.6deactivate
# 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.5deactivate
当你使用 virtualenv创建一个运行沙盒时,它会自动在沙盒环境中为您安装setuptools和 pip (听起来不错,可以还没尝试过)。但如果您使用 pyvenv 的话,您就必须自己动手安装了。也简单,激活沙盒之后通过运行下载的z_setup.py文件去安装即可。