无sudo权限下RHEL7.9中Python3.11关联OpenSSL1.1.1的正确配置方法
在RHEL 7.9上编译OpenSSL 1.1.1与Python 3.11并确保SSL模块可用的正确步骤
1. 安装编译依赖
先安装RHEL 7.9上编译所需的基础工具和依赖包:
sudo yum install -y gcc make zlib-devel wget tar
2. 清理旧编译残留(可选但推荐)
如果之前有失败的编译记录,清理相关目录避免干扰:
# 删除之前的OpenSSL安装目录 rm -rf $HOME/.local # 删除之前的Python安装目录 rm -rf $HOME/.localpython # 清理可能的编译临时文件(如果保留了源码包) rm -rf openssl-1.1.1* Python-3.11*
3. 编译安装OpenSSL 1.1.1
- 下载并解压OpenSSL 1.1.1源码(以1.1.1w为例,可替换为对应版本):
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=$HOME/.local --openssldir=$HOME/.local --libdir=lib shared zlib-dynamic no-ssl3 no-tls1 no-tls1_1
注:
no-ssl3 no-tls1 no-tls1_1为可选参数,用于禁用老旧不安全协议,无需可移除。
- 编译并安装:
make -j$(nproc) make install
- 设置临时环境变量,让后续编译Python时优先找到新安装的OpenSSL:
export PATH=$HOME/.local/bin:$PATH export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig:$PKG_CONFIG_PATH
4. 编译安装Python 3.11
- 下载并解压Python 3.11源码:
cd .. wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz tar xzf Python-3.11.9.tgz cd Python-3.11.9
- 配置编译参数,明确指定OpenSSL路径并启用优化:
./configure --enable-optimizations --prefix=$HOME/.localpython \ --with-openssl=$HOME/.local --with-openssl-rpath=auto \ --enable-shared
注:
--enable-shared确保生成共享库,避免后续运行时依赖问题。
- 编译并安装:
make -j$(nproc) make install
5. 验证SSL模块可用性
- 将Python的安装目录加入环境变量(临时测试,永久生效可写入
~/.bashrc):
export PATH=$HOME/.localpython/bin:$PATH export LD_LIBRARY_PATH=$HOME/.localpython/lib:$LD_LIBRARY_PATH:$HOME/.local/lib
- 测试Python的ssl模块:
python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
若输出OpenSSL 1.1.1w ...类版本信息,说明ssl模块已正常加载,此时使用pip不会再出现TLS/SSL相关警告。
常见问题排查:
- 若仍报错,检查Python编译时的配置输出,确认是否有
Could not find OpenSSL提示,这说明环境变量未设置正确,需重新执行OpenSSL后的环境变量配置再重新编译Python。- 确保编译OpenSSL时未使用
no-shared参数,否则Python无法链接共享库版本的OpenSSL。
内容的提问来源于stack exchange,提问作者Francisco Skrobola
相关产品推荐
相关产品推荐

