CentOS7.9编译安装Python3.10后SSL模块缺失问题求助
解决CentOS 7.9编译Python3.10.12后SSL模块缺失问题
CentOS 7.9默认的OpenSSL版本是1.0.2,而Python 3.10要求OpenSSL版本至少为1.1.1,所以哪怕你装了openssl-devel,编译时也没法正常启用SSL模块,导致_ssl模块缺失,进而引发pip的SSL连接错误。
下面是具体解决步骤:
一、清理已安装的Python3.10
- 删除之前创建的软链接:
sudo rm -f /usr/local/bin/python3 - 卸载通过
altinstall安装的Python3.10:sudo rm -rf /usr/local/bin/python3.10 sudo rm -rf /usr/local/lib/python3.10
二、升级OpenSSL到1.1.1版本
CentOS7默认软件源里的OpenSSL版本不够,得手动编译安装高版本:
- 安装编译依赖:
sudo yum install -y gcc make perl-core zlib-devel - 下载并解压OpenSSL 1.1.1稳定版(这里用1.1.1w为例):
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar -xvf openssl-1.1.1w.tar.gz cd openssl-1.1.1w - 编译安装,指定安装路径避免覆盖系统默认版本:
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib make sudo make install - 配置系统优先使用新安装的OpenSSL:
sudo echo "/usr/local/openssl/lib" >> /etc/ld.so.conf.d/openssl.conf sudo ldconfig sudo ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl - 验证版本,输出显示
OpenSSL 1.1.1w就说明升级成功:openssl version
三、重新编译Python3.10.12
- 回到Python源码目录(如果已经删除,重新解压下载的
Python-3.10.12.tgz):cd Python-3.10.12 make clean # 清理之前的编译缓存 - 配置编译参数,必须指定新安装的OpenSSL路径:
这里必须加./configure --enable-optimizations \ --with-openssl=/usr/local/openssl \ --with-openssl-rpath=auto--with-openssl参数,因为系统默认的OpenSSL版本不满足Python3.10的要求,得手动指向我们刚装的高版本。 - 编译并安装:
make sudo make altinstall - 重新创建软链接:
sudo ln -s /usr/local/bin/python3.10 /usr/local/bin/python3
四、验证修复效果
- 检查SSL模块:
没有报错就说明SSL模块已正常加载。python3.10 -m ssl - 测试pip:
此时应该能正常连接PyPI,不会再出现SSL相关错误。python3.10 -m pip install --upgrade pip
内容的提问来源于stack exchange,提问作者Fadwa
相关产品推荐
相关产品推荐

