EulerOS中Python2.x安装pip遇问题:SSL错误及版本匹配失败求助
问题背景
安装libosmesa-devel依赖Python 2.x版本的pip,已部署Python3和Python2,但执行python2 get-pip.py时出现以下错误:
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(SSLError('_ssl.c:710: The handshake operation timed out',),)) - skipping
ERROR: Could not find a version that satisfies the requirement pip<21.0 (from versions: none)
ERROR: No matching distribution found for pip<21.0
尝试过重新编译带SSL的Python2、参考旧教程、添加HTTP源参数均无效。
解决方案
1. 优先使用系统包管理器安装(最可靠)
EulerOS基于RHEL,系统仓库中提供python2-pip包,直接执行:
# EulerOS 2.x用yum yum install python2-pip -y # EulerOS 3.x用dnf dnf install python2-pip -y
安装后若pip版本过高(≥21.0,不兼容Python2),降级到最后支持Python2的版本:
pip2 install pip==20.3.4 -y
验证安装:
pip2 --version
2. 离线安装兼容Python2的pip包
如果系统仓库无对应包,手动下载最后支持Python2的pip版本(20.3.4)离线安装:
方式1:用whl包安装
# 下载whl包(若本地无法下载,可从其他机器传输) wget https://files.pythonhosted.org/packages/py2.py3/p/pip/pip-20.3.4-py2.py3-none-any.whl # 执行安装 python2 pip-20.3.4-py2.py3-none-any.whl/pip install pip-20.3.4-py2.py3-none-any.whl
方式2:用源码包安装
# 下载源码包 wget https://files.pythonhosted.org/packages/source/p/pip/pip-20.3.4.tar.gz # 解压并安装 tar -zxvf pip-20.3.4.tar.gz cd pip-20.3.4 python2 setup.py install
3. 修复SSL握手超时问题(若需在线安装)
步骤1:更新系统CA证书
yum install ca-certificates -y update-ca-trust
步骤2:配置网络代理(若网络受限)
如果是代理导致无法访问pypi,临时设置代理后再执行安装:
export HTTPS_PROXY=http://your-proxy-ip:proxy-port python2 get-pip.py
或者直接给get-pip.py传递代理参数:
python2 get-pip.py --proxy http://your-proxy-ip:proxy-port
为什么之前的方法无效?
- 重新编译Python2时,可能系统OpenSSL版本与Python2.7.15不兼容,或编译过程未正确链接SSL库;
- 旧的HTTP版pypi源已被强制重定向到HTTPS,因此添加
--index-url http://pypi.python.org/simple/参数无法生效; - 报错“找不到pip<21.0版本”是因为SSL问题导致无法下载包索引,并非真的没有对应版本。
内容的提问来源于stack exchange,提问作者Mashuk Paban

