前因后果
业务需要 决定升级python2.7至python3
升级之前:
[root@shanghai-adminserver ~]# python -V
Python 2.7.5
升级之后:
[root@shanghai-adminserver ~]# python -V
Python 3.9.1
安装步骤(原python2保留)
1、创建安装目录:
cd /usr/local
mkdir python3
2、下载安装包,解压:
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
tar -xvf Python-3.9.1.tgz
3、安装相关依赖
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel gcc
4、编译、安装
cd Python-3.9.1
./configure --prefix=/usr/local/python3/ # 检查编译环境/相关库文件/配置参数,生成makefile
make # 对源代码进行编译,生成可执行文件
make install # 将生成的可执行文件安装到当前计算机中指定位置
5、建立软连接
注意:如果/usr/bin 目录下已有python、pip 先删除之
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
注意事项
1、安装时报错ModuleNotFoundError: No module named '_ctypes'的解决办法(步骤3安装依赖的时候已经安装过)
安装 libffi-devel 然后重新 make&&make install
yum install libffi-devel
2、关于_ssl模块异常的问题,由于服务器/usr/local/ssl目录下安装的不是openssl,本机openssl版本也是1.0.2,所以没有按照其他人方式进行
去除下面文件中关于ssl的三条注释,然后重新make&&make install
vi /usr/local/Python-3.9.1/Modules/Setup
3、升级python3之后yum无法使用的问题
因为yum的包管理,是基于python2.x写的,跟python3有语法上的不兼容
分别修改以下yum的配置文件
将第一行的 #!/usr/bin/python 改为 #!/usr/bin/python2 (自己核实/usr/bin/目录下关于python2的情况)
vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
操作总结
编译、安装时可以将日志输出到日志文件中,方便后续核实错误或者缺少依赖之类的问题,逐个分析解决。