RHEL6.10中Python3.8缺失SSL模块导致pip安装失败求助
问题原因与解决方案
核心问题
RHEL6.10自带的OpenSSL 1.0.1e版本过低,无法满足Python3.8的编译要求(Python3.8要求OpenSSL≥1.0.2),加上编译Python前可能缺少OpenSSL开发依赖,导致Python编译时未启用SSL模块,最终pip无法通过HTTPS连接PyPI。
解决步骤
1. 安装编译依赖
先安装Python和OpenSSL编译所需的基础依赖:
yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ zlib-devel
2. 手动编译兼容版本的OpenSSL
RHEL6官方源没有提供高版本OpenSSL,手动编译Python3.8支持的OpenSSL 1.1.1稳定版本:
# 下载源码包 wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz # 解压 tar xzf openssl-1.1.1w.tar.gz cd openssl-1.1.1w # 配置编译参数,安装到独立路径避免覆盖系统自带版本 ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib # 编译并安装 make && make install
3. 配置环境变量让Python定位新OpenSSL
临时设置环境变量,确保Python编译时能找到新安装的OpenSSL:
export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH export CPPFLAGS="-I/usr/local/openssl/include" export LDFLAGS="-L/usr/local/openssl/lib"
4. 重新编译安装Python3.8
清理之前的编译残留,重新配置并编译:
cd /path/to/Python-3.8.16 # 清理旧编译文件 make clean # 配置时指定新OpenSSL路径并启用优化 ./configure --with-openssl=/usr/local/openssl --enable-optimizations # 安装(用altinstall避免替换系统默认Python) make altinstall
5. 验证SSL模块状态
执行以下命令,若输出新安装的OpenSSL版本则说明配置成功:
python3.8 -c "import ssl; print(ssl.OPENSSL_VERSION)"
此时再运行pip3.8 install shareplum即可正常安装模块。
内容的提问来源于stack exchange,提问作者Ashu
相关产品推荐
相关产品推荐

