CentOS6.5 下将 Python2.6.6 升级到Python3.5

一、 从Python官网到获取Python3的包, 切换到目录/usr/local/src

1 #wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz

二、 使用命令如下命令进行解压缩:

xz -d Python-3.5.1.tar.xz // 将xz文件解压
tar -xf Python-3.5.1.tar

三、 在/usr/local路径下创建目录--python3.5, 为第4步的安装目录

1 $mkdir /usr/local/python3.5

四、 编译安装

1 $cd /usr/local/src/Python-3.5.1
2 #./configure --prefix=/usr/local/python3.5
3 #make all
4 #make install
5 #make clean
6 #make distclean

五、 进入安装的绝对路径,检查是否安装成功

1 $ /usr/local/python3.5/bin/python3.5 -V
2 Python 3.5.1

六、查看环境变量,启动python时默认按照PATH的顺序进行查找,在/usr/bin中的python此时为Python2.6.6的。

1 $echo $PATH
2 /usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/gordon/bin

七、修改软连接,启动python时指向python3.5

1、备份python

mv  /usr/bin/python  /usr/bin/python2.6.6 // 备份centos中默认2.6.6的python

2、修改软连接

1 sudo ln -s /usr/local/python3.5/bin/python3 /usr/bin/python

3、 验证默认是否启动python3.5

1 $ python -V
2  Python 3.5.1

八、此时,系统中的yum命令将不能使用,因为其依赖原来的python2.6.6 修改yum的第一行:

1 vim /usr/bin/yum
2 #!/usr/bin/python2.6.6

 可能还需要修改该路径下的第一行

 vim /usr/libexec/urlgrabber-ext-down 将 #! /usr/bin/python 改成  #!/usr/bin/python2.6.6

遇到的错误:

升级了python之后,需要重新安装pip命令。要不然pip安装的路径会出错。(因为之前安装python的时候,可能设置--prefix参数),最好是用源码安装的方式重新安装(http://www.cnblogs.com/hoojjack/p/8672612.html)

1、pip 错误

1 [root@docker Python-3.5.1]# pip
2 Traceback (most recent call last):
3   File "/usr/bin/pip", line 7, in <module>
4     from pip._internal import main
5 ImportError: No module named 'pip._internal'

说明pip的映射文件没有安装正确,在安装python3.5时,默认会安装pip3.5

备份原来系统默认的:mv  /usr/bin/pip  /usr/bin/pip_bak,创建pip3.5的软链接  ln -s /usr/local/bin/pip3.5  /usr/bin/pip

1 [root@docker local]# mv /usr/bin/pip /usr/bin/pip_bak
2 [root@docker local]# ln -s /usr/local/bin/pip3.5 /usr/bin/pip
3 [root@docker local]# pip
4 
5 Usage:   
6   pip <command> [options]

2、You are using pip version 7.1.2, however version 10.0.1 is available.You should consider upgrading via the 'pip install --upgrade pip' command.

1 [root@docker local]# pip install --upgrade pip

3、升级后,交互模式下方向键、退格键 Backspace 等出现乱码的问题。

yum install readline  readline-devel

如果发现系统中已经有readline 库了,只是在/lib64/目录中,于是乎,做了软链到/usr/lib/ 和 /usr/lib64/

ln -s  /lib64/libreadline.so.6 /usr/lib/

ln -s  /lib64/libreadline.so.6 /usr/lib64/

ln -s  /lib64/libreadline.so.6.0 /usr/lib/

ln -s  /lib64/libreadline.so.6.0 /usr/lib64/

重新编译安装一遍python35,问题可以解决。

Reference:

[1] https://blog.csdn.net/nkd50000/article/details/79257881

[2] https://alfred-long.iteye.com/blog/1959853

原文地址:https://www.cnblogs.com/hoojjack/p/8672435.html