openssl yum安装或编译安装

Python 的 ssl 模块不可用,导致 pip 无法通过 HTTPS 下载包。这通常发生在你 手动编译 Python 时,没有正确安装或链接 OpenSSL。

1.确认系统 OpenSSL 安装

1
openssl version

如果没有安装,或者版本太低(建议 >= 1.1.1),先安装/升级:

1
2
3
4
5
# CentOS 7
yum install -y openssl-devel bzip2 bzip2-devel zlib-devel xz-devel

# AliLinux3/DNF
dnf install -y openssl-devel bzip2 bzip2-devel zlib-devel xz-devel

一般高版本的python对openssl版本有要求,需要基于源码编译


2.重新编译 Python 并指定 OpenSSL 路径

OpenSSL 并安装到 /usr/local/openssl-3

1
2
3
4
5
tar -zxvf openssl-3.1.3.tar.gz
cd openssl-3.1.3
./config
make -j$(nproc)
sudo make install

py3.9再次构建编译

cd Python-3.9.19
make clean

./configure --prefix=/usr/local/python3.9 \
            --with-openssl=/usr/local/openssl-3 \
            --enable-optimizations

make -j$(nproc)
make install

注意: --with-openssl 很关键,它会确保 ssl 模块被编译进 Python。


3.验证 ssl 模块

编译安装完成后,先测试:

1
/usr/local/python3.9/bin/python3.9 -c "import ssl; print(ssl.OPENSSL_VERSION)"

正常的话会输出 OpenSSL 版本号。


4.升级pip

确认 ssl 可以用后,再升级 pip:

1
2
3
4
5
/usr/local/python3.9/bin/python3.9 -m ensurepip --upgrade

#or

/usr/local/python3.9/bin/python3.9 -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple