CentOS下使用pip安装包遇SSLError问题求助
编译Python 3.10.9后pip SSL模块不可用问题排查与解决
操作背景
系统环境:CentOS 7.6.1810
已执行操作:
- 安装编译依赖:
yum install openssl-devel bzip2-devel libffi-devel yum groupinstall "Development Tools"
- 下载Python 3.10.9源码包,解压后进入源码目录,执行编译安装:
./configure --enable-optimizations sudo make altinstall
- 执行pip时出现以下错误:
Package Version ---------- ------- pip 22.3.1 setuptools 65.5.0 WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping WARNING: There was an error checking the latest version of pip.
问题原因
CentOS 7默认自带的OpenSSL版本为1.0.2,而Python 3.10及以上版本要求OpenSSL版本至少为1.1.1。你安装的openssl-devel是系统默认的1.0.2版本,无法满足Python 3.10编译SSL模块的要求,导致编译过程中SSL模块被自动跳过,最终pip无法建立HTTPS连接。
另外,编译时./configure检测不到符合要求的OpenSSL库时,不会抛出明显错误,只会静默跳过SSL模块编译,这也是你安装过程异常迅速的原因——跳过了大量模块的编译工作。
排查步骤
- 检查系统OpenSSL版本:
执行以下命令确认当前系统OpenSSL版本:
openssl version
若输出为OpenSSL 1.0.2k-fips 26 Jan 2017(CentOS 7默认版本),则确认版本不兼容。
- 查看Python编译日志的SSL检测结果:
进入Python源码目录,搜索编译配置日志中的SSL相关内容:
grep -i "ssl" config.log
若出现checking for SSL_library_init... no或Could not find OpenSSL development files等内容,说明编译时未检测到符合要求的OpenSSL库。
- 验证Python SSL模块状态:
执行Python交互命令,尝试导入ssl模块:
python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"
若抛出ModuleNotFoundError: No module named 'ssl'或输出的版本低于1.1.1,说明SSL模块未正确编译。
解决方法
- 升级OpenSSL到1.1.1版本:
下载OpenSSL 1.1.1系列的长期支持版本源码包,解压后编译安装:
cd 源码目录 ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib make && sudo make install # 配置环境变量,让系统优先使用新安装的OpenSSL echo "export LD_LIBRARY_PATH=/usr/local/openssl/lib:\$LD_LIBRARY_PATH" >> ~/.bashrc echo "export PATH=/usr/local/openssl/bin:\$PATH" >> ~/.bashrc source ~/.bashrc # 验证版本 openssl version
- 重新编译Python 3.10.9:
进入Python源码目录,清理之前的编译缓存,重新指定OpenSSL路径后编译:
cd Python-3.10.9 make clean ./configure --enable-optimizations --with-openssl=/usr/local/openssl sudo make altinstall
- 验证修复效果:
再次检查SSL模块状态,并测试pip:
python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)" pip3.10 install --upgrade pip
内容的提问来源于stack exchange,提问作者RedRum69
相关产品推荐
相关产品推荐

