问题
CentOS 6中,默认安装了Python 2.6。而pip,jupyter这样的常用工具是不支持Python 2.6的。为了使用这些工具,就必须将Python 2.6升级到Python 2.7以上的版本。那直接编译升级Python不就好了吗?
问题就在这里,CentOS 6中,有一些系统工具(比如yum)必须要使用Python 2.6。你升级到Python 2.7,他们就歇菜了。
所以呢,解决方法就是,让CentOS 6中,同时共存Python 2.6和Python 2.7。咱们自己就用Python 2.7,让yum之类的系统工具使用Python 2.7。
解决步骤
1 安装gcc之类的编译工具和依赖库
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
2 下载Python 2.7
wget http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz
unxz Python-2.7.10.tar.xz
tar -vxf Python-2.7.10.tar
3 配置编译过程,编译安装
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
安装完成后,系统中共存了如下的Python命令。
- python: Python 2.6.6
- python2: Python 2.6.6
- python2.6: Python 2.6.6
- python2.7: Python 2.7.10
yum之类的系统工具,继续使用python(即Python 2.6.6),我们自己可以用python2.7来访问我们的Python 2.7.10。
安装pip
Python升级完成后,系统中还不存在pip。我们下载并用python2.7来安装pip。
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
python2.7 get-pip.py
使用virtualenv
在上面的所有步骤中,为了使用Python 2.7.10,我们都必须用命令python2.7。因为命令python默认访问Python 2.6.6。
为了能在shell中直接使用python命令访问Python 2.7.10,我们安装virtualenv,为Python 2.7.10创建一个虚拟的sandBox。
1 安装 virtualenv
如下命令为Python 2.7.10创建一个虚拟的sandBox。
pip2.7 install virtualenv
2 创建virtualenv项目
执行如下命令,就在当前目录创建virtualenv项目。实际上就是生成了py27project目录,并把Python 2.7.10等代码拷贝到里面。
virtualenv py27project
3 使用 py27project
用source命令,就能激活py27project。注意当前路径下必须要存在py27project目录。
source py27project/bin/activate
激活后,可以看到shell命令行前自带(py27project)。在shell中就能用python命令访问Python 2.7.10了。
4 退出 py27project
用deactivate命令就能退出激活的virtualenv环境。
参考
- How to install Python 2.7 and Python 3.3 on CentOS 6. http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/
- CentOS升级Python2.6到Python2.7并安装pip. http://www.jianshu.com/p/7d7c5cf267f4
- Windows下使用virtualenv. http://www.jb51.cc/article/p-tjcjhrom-ca.html