python版本自行官网下载,切换到 3.10 和 3.11 后发现, 只要涉及 HTTPS 请求就会报 SSL 模块错误.
所以核心问题就是解决openssl问题, CentOS 7 自带的 openssl 版本是 1.0.2k 之类, 不符合 python 3.10 版本的要求, 所以安装 python 请求 HTTPS 链接就会报 SSL 模块错误.
openssl-1.1.1w.tar.gz
Python-3.11.7.tgz
1.安装编译依赖
2.更新openssl
3.编译安装python
第一步,安装编译依赖
| yum -y groupinstall "Development tools"
yum -y install wget gcc-c++ pcre pcre-devel zlib zlib-devel libffi-devel zlib1g-dev openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel bzip2-devel
|
第二步,更新openssl
2.1 移除原有openssl
| #查看原openssl
openssl version
#移除原有openssl
yum -y remove openssl
|
2.2 更新 CentOS 信任根证书, 防止遇到 HTTPS 不信任证书的问题
| yum -y install ca-certificates
update-ca-trust force-enable
update-ca-trust extract
|
2.3 编译安装openssl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | #下载
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz --no-check-certificate
tar -zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
#编译安装
./config --prefix=/usr/local/openssl
make -j && make install
#备份
cp /usr/bin/openssl /usr/bin/openssl.`date +%F_%H%M%S`
cp /etc/ld.so.conf /etc/ld.so.conf.`date +%F_%H%M%S`
#更新
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
echo '/usr/local/openssl/lib' >>/etc/ld.so.conf
ldconfig -v
#验证新版本(输出当前安装的版本)
openssl version
|
第三步,编译安装python
3.1 下载编译安装
| #下载
wget https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tgz --no-check-certificate
# 国内服务器可使用淘宝镜像
# wget https://registry.npmmirror.com/-/binary/python/3.11.7/Python-3.11.7.tgz
tar xvzf Python-3.11.7.tgz
cd Python-3.11.7
#编译安装(--enable-optimizations 性能优化,需要gcc10版本,但centos7默认gcc4版本,所以咱们跳过)
./configure --prefix=/usr/local/python3.11 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto
make -j && make altinstall
|
3.2 创建软连接
| #创建版本软连接
ln -sf /usr/local/python3.11/bin/pip3.11 /usr/bin/pip3.11
ln -sf /usr/local/python3.11/bin/python3.11 /usr/bin/python3.11
#验证
python3.11 --version
pip3.11 --version
|
3.4 创建别名(可选,推荐)
修改当前用户环境配置~/.bashrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | #备份
cp ~/.bashrc ~/.bashrc.`date +%F_%H%M%S`
# 默认使用 Python 3.11
echo '
alias python=python3.11
alias pip=pip3.11
' >> ~/.bashrc
#生效
source ~/.bashrc
#验证
python --version # 应显示 Python 3.x.x
pip --version # 应显示 pip 对应 Python 3.x.x
|
3.4 创建虚拟环境(可选,推荐)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | VENV_NAME=venv
VENV_DIR=/opt/pyenv
#创建虚拟环境
python -m venv $VENV_DIR/$VENV_NAME
#mkdir -p $VENV_DIR
#cd $VENV_DIR
#python -m venv $VENV_NAME
#激活进入虚拟环境
source $VENV_DIR/$VENV_NAME/bin/activate
#退出当前虚拟环境
deactivate
#删除虚拟环境,直接删除对应目录即可
rm -rf $VENV_DIR/$VENV_NAME
|