零、说明
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文件。
第五、说明