oracle的VPS上我一直安装的是CentOS,最近要要能够到oci,提示Python2.7即将不能支持。看了下系统刚好是2.7.5,所以有必要升级python一下。
1、准备工作
CentOS

yum update
yum upgrade

Ubuntu

apt update
apt upgrade

2、下载新版本python,可以提前去官网查看想要安装的版本对应的路径

wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz

3、解压,并进入目录

tar -xf Python-3.9.7.tgz
cd Python-3.9.7/

4、安装
为了避免sqlite3报错,建议提前先执行一次下面的命令

yum -y install sqlite-devel

执行编译,注意一定要带--with-ssl,不然会提示pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.错误

./configure --with-ssl
make & make install

5、如果编译时出现以下错误,请安装gcc后再次编译

configure: error: in `/root/Python-3.9.7':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

安装gcc

yum -y install gcc

如果在make & make install报错can't decompress data; zlib not available,请执行一下命令后,再次编译安装

yum -y install zlib*

安装过程中有可能停住,多执行几次make & make install

6、到现在python3已经安装好了,可以用python3来看看时候有交互界面,但是python默认指向的还是python2,所以要修改软连接

mv /usr/bin/python /usr/bin/python2.7.5
ln -s /usr/local/bin/python3.9 /usr/bin/python

7、解决yum报错
执行yum命令的时候,会出现下面的错误

  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

修改yum命令中的python指向

vi /usr/bin/yum

将第一行的#!/usr/bin/python修改为#!/usr/bin/python2
如果继续报错

 File "/usr/libexec/urlgrabber-ext-down", line 28
    except OSError, e:

需要进一步修改/usr/libexec/urlgrabber-ext-down文件头,和上面相同,yum即刻恢复正常
8、firewall报错

vi /usr/bin/firewall-cmd
vi /usr/sbin/firewalld

将第一行中的#!/usr/bin/python -Es修改为#!/usr/bin/python2 -Es

9、有时候可能出现pip3:命令未找到,但已安装python3-pip

locate pip3

它会给你一个列表,其中会有以下字段,如果centos7没有安装locate需要先安卓locate

yum -y install mlocate

初始化,然后就可以用查找命令了

updatedb

/<path>/pip3
/<path>/pip3.x

然后就可以建立软连接

ln -s /<path>/pip3.x /usr/local/bin/pip3

10、有时候升级的时候,因为依赖问题,升级失败,如下:

The following packages have unmet dependencies: python3.10 : Depends:
libpython3.10-stdlib (= 3.10.5-1+focal1) but 3.10.4-1+focal1 is to be
installed python3.10-minimal : Depends: libpython3.10-minimal (=
3.10.5-1+focal1) but 3.10.4-1+focal1 is to be installed E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or
specify a solution).

这时候需要用下面的命令进行修复

sudo apt purge libpython3.10-minimal libpython3.10-stdlib libpython3.10 libpython3.10-dev python3.10 python3.10-minimal python3.10-dev python3.10-venv
sudo apt install python3.10

评论已关闭