网上有很多升级的文章,搞得头晕。我们很有必要花几分钟时间提前理清一些问题(版本,软链接的结构,安装编译路径等,pip3 等),再去安装3.8就很快了。
1. 建议保留2.7版本,3.8版本应作为新增。
为什么要保留2.7:因为linux或者其他得服务已经依赖了python2.7版本。我们拿到服务器时,并不知道是否有前人已经使用了python2.7版本得依赖服务。所以不建议卸载2.7版本哦。 比如已经安装的yum 服务。
cat /usr/bin/yum
第一行代码就是 yum第一行代码就 #!/usr/bin/python 这里指定的就是python2.7了。如果后续安装了3.8并且更换了指引或者直接卸载了2.7,那么yum服务就报错。 (额外的python和java不一样。版本直接的兼容 2和3有很大差别。)
2. 现有版本的软链接分析
查看python指引
which python
ls /usr/bin/python
ls 查看后,看颜色发现是软连接,这里并不是真正的pythoh。
根据指引查看 /usr/bin/ 下的python
ll /usr/bin/ | grep python
带箭头的就是软链接。这里创建了两个软链接。真正的是/usr/bin/python2.7
/usr/bin/python 指向 /usr/bin/python2 指向 /usr/bin/python2.7
之所以这样创建,是方便用户使用。我们窗口敲
python
/usr/bin/python
/usr/bin/ python2
/usr/bin/python2.7
是都可以访问python服务。因为他们的最终指向都是/usr/bin/python2.7
这里安装有两种方式。
一、敲下python 时,还是原样找到/usr/bin/python2.7 用python2.7版本。
敲下python3 时,找到/usr/bin/python3.8 用python3.8版本。
二、敲下python 时,找到/usr/bin/python3.8 用python3.8版本。
敲下python2 时,找到/usr/bin/python2.7 用python2.7版本。
如果你看明白了上面的软链接。可以灵活使用,不止这两种方法哦。
因为我这里是新服务器,还没有其他人有依赖2.7的服务。所以下面是第二种方式的配置。
3. 开始安装 python3.8
python可以理解为给多用户提供服务,建议使用root账户安装。 其他用户请sudo。
先配置环境,这一步很重要,不然后期使用python一些库会受阻。
yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
# 切换目录
cd /usr/local;
# 下载源码包
wget http://npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz;
# 解压
tar -xzf Python-3.8.0.tgz
# 进到解压路径
cd /usr/local/Python-3.8.0
# 创建安装路径
mkdir /usr/local/python3
# 生产makefile文件 并且制定到安装路径 确保已经安装gcc (yum install gcc)
./configure --prefix=/usr/local/python3
# 编译
make
# 安装
make install
查看 bin目录的安装
真正指向是 /usr/local/python3/bin/python3.8
ll /usr/local/python3/bin/
敲下 /usr/local/python3/bin/python3.8 或者 /usr/local/python3/bin/python3 就显示安装成功了。但是还没有配置软链接。敲下python还是2.7的。还需要配置软链接
4.配置软链接
这里我们希望敲下 python3 就可以直接访问 python3.8
# 创建软链接 /usr/bin/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
# 删除之前的软连接 这两个是指向2.7的
rm /usr/bin/python;
rm /usr/bin/pip;
# 创建软链接 /usr/bin/python 让它指向到python3.8
ln -s /usr/local/python3/bin/python3 /usr/bin/python;
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip;
查看验证 python -V, pip -V 就OK了。
5.其他服务的修改
到这里我们发现, /usr/bin/python 的软连接是指向3.8的
一些服务的代码 如果有 # /usr/bin/python代码的指引。 我们需要改成
/usr/bin/python2.7 或者 /usr/bin/python2 (因为这两个软链接还在),这样他们还是可以继续使用2.7
打开yum
vim /usr/bin/yum
第一行代码改成
#!/usr/bin/python2.7
vim /usr/libexec/urlgrabber-ext-down;
# 一样的第一行代码改成
#!/usr/bin/python2.7
如果其他服务还有这种问题,改动代码里的指引就可以了。
如果只是3.8的服务,比如该服务器主要跑某个3.8的python服务,上面的就很适合了。
当然知道了软连接的指向。根据服务器的服务需求。我们可以自由配置和改动。