环境
服务器版本:CentOS 7 64位
旧Python版本:2.7.5
新Python版本:3.8.0
说明:本次配置使用root用户进行操作,故在代码中未使用sudo语句,请使用非root用户留意
1.下载目标python版本压缩包
这里,我使用的是python在国内的镜像,若希望使用官网地址当然也是可以的,不过速度就两说了…
cd /usr/local
wget http://npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz
2.解压压缩包
tar -xzf Python-3.8.0.tgz
3.在当前目录下创建文件夹–python3
mkdir python3
4.编译与安装
cd Python-3.8.0
./configure --prefix=/usr/local/python3
make && make install
问题
在这个过程中,出现了安装失败的问题
zipimport.ZipImportError: can't decompress data; zlib not available
这是由于缺少依赖造成的,可执行以下代码:
yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
5.两种版本配置方法
关于配置python版本的方法大致分为两种:
- 直接创建python3软链,利用命令 python3 调用新版本python,与自带python不冲突
- 覆盖现有python,使其指向新安装的python,利用命令 python 便可调用新版本python
所涉及命令解释
- ln命令用来为文件创建链接,链接类型分为硬链接和符号(软)链接两种,默认的连接类型是硬连接。如果要创建符号链接必须使用”-s”选项,符号链接相当于Windows下的快捷方式,即可以实现启动python时指向python3.8
ln -s a b # 建立软连接,b指向a
下面分别对两种方法进行介绍
5.1 直接创建python3软链
在/usr/bin路径下创建python3软链,指向已安装的python3
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
在/usr/bin路径下创建pip3软链,指向已安装的pip3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
此时系统中存在两个python版本:
命令 python 对应的仍是默认2.7版本
命令 python3 则对应新安装的3.8版本,
此本方法到此便结束了,可以快乐地打出 python3 -V, pip3 -V查看对应版本了
5.2 覆盖现有python,启动python时指向python3.8
备份旧python与pip
mv /usr/bin/python /usr/bin/python2_old
mv /usr/bin/pip /usr/bin/pip2_old #第三部分的文件名可根据本机版本修改
修改软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
由于修改了python的版本,会导致一些依赖于旧版本的程序出现错误,如yum,可进行如下配置:
vim /usr/bin/yum
文件第一行如下图:
将python修改为旧的版本号,此处添加2.7
不过在安装软件时仍会报错
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
还是因为python更换的原因, 依照上述操作修改文件即可:打开/usr/libexec/urlgrabber-ext-down 文件,将**#!/usr/bin/python** 修改为 #!/usr/bin/python2.7
转载请注明来源