centos6升级python版本至python3.5
一、 从Python官网到获取Python3的包, 切换到目录/usr/local/src
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 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/
1 ln -s /lib64/libreadline.so.6 /usr/lib/ 2 3 ln -s /lib64/libreadline.so.6 /usr/lib64/ 4 5 ln -s /lib64/libreadline.so.6.0 /usr/lib/
6 7 ln -s /lib64/libreadline.so.6.0 /usr/lib64/
重新编译安装一遍python35,问题可以解决。