问题
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