先声明下,本以为在centos下升级python很easy,,没想到是个大坑。有的能装好,但是不能用。各种缺失吧,非常蛋疼。
下面整理下思路,从python2.6.X升级到python2.7.9,同时安装了setuptools以及pip
1、从python2.6.X升级python到2.7.9
CentOS 6.X默认的Python版本都是2.6 ,需要升级到2.7以及安装pip方法如下:
准备:
yum install bzip2 bzip2-devel -y
yum install zlib zlib-devel -y
yum install openssl openssl-devel -y
下载python2.7源码,编译安装:
- wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar zxvf Python-2.7.9.tgz
cd Python-2.7.9
./configure
make -j4
make install
然后需要配置一下
建立软链接,默认指向Python2.7
mv /usr/bin/python /usr/bin/python2.6_temp
ln -s /usr/local/bin/python2.7 /usr/bin/python
python -V # Python 2.7.9
yum不兼容Python2.7,需要指定为原版本
vi /usr/bin/yum
# 将"!/usr/bin/python"改为"!/usr/bin/python2.6"
# 环境变量
vi /etc/profile
# 添加如下内容:
PY_HOME=/usr/local/bin/python2.7
export PATH=PATH
source /etc/profile # 当前终端生效,reboot后才会完全生效
echo $PATH
如果你升级python失败,用这个方法,这个方法可以直接搞定!
解决交互式乱码问题 (参考 http://blog.csdn.net/clevercode/article/details/45438747)
2)解决方案。
这个问题主要是由于缺少readline Module问题导致的。而CentOS默认只有readline模块而没有readline-devel开发模块。所以只要安装下即可。
yum -y install readline-devel
重新编译安装pythoncd Python2.9 #回到解压目录**
./configure **
make #编译
make install 安装
搞定
2、安装setuptools
- wget https://pypi.python.org/packages/6b/dd/a7de8caeeffab76bacf56972b3f090c12e0ae6932245abbce706690a6436/setuptools-28.3.0.tar.gz#md5=a46750b6bd90a1343466bd57b0e2721a
- tar zxvf setuptools-28.3.0.tar.gz
- cd setuptools-28.3.0
- python setup.py install
3、安装pip
备注wget加空格加https....
- wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4
- tar pip-8.1.2.tar.gz
- tar zxvf pip-8.1.2.tar.gz
- cd pip-8.1.2
- python setup.py install
4. pip配置
原本使用pip版本为7.1.0,后升级至9.0.1 之后使用pip list提示pkg_resources.DistributionNotFound: The 'pip==7.1.0' distribution was not found and is required by the application 解决方法: vim /usr/bin/pip ------------------- #!/usr/bin/python # EASY-INSTALL-ENTRY-SCRIPT: 'pip==7.1.0','console_scripts','pip' requires = 'pip==9.0.1' import sys from pkg_resources import load_entry_point if name == 'main': sys.exit( load_entry_point('pip==9.0.1', 'console_scripts', 'pip')() ) ------------------- 将里面pip==后面的版本改为安装的pip版本即可