Ubuntu 4.4.0-176-generic运行pip/pip3报PROTOCOL_SSLv3属性错误无法使用
问题说明
- 运行环境:Ubuntu 4.4.0-176-generic
- 故障表现:执行
pip或pip3命令时直接抛出异常,无法正常使用,完整报错信息如下:
Traceback (most recent call last): File "/usr/local/bin/pip", line 9, in <module> load_entry_point('pip==1.5.6', 'console_scripts', 'pip')() File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 356, in load_entry_point File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2476, in load_entry_point File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2190, in load File "/usr/local/lib/python2.7/dist-packages/pip/__init__.py", line 11, in <module> from pip.vcs import git, mercurial, subversion, bazaar # noqa File "/usr/local/lib/python2.7/dist-packages/pip/vcs/mercurial.py", line 9, in <module> from pip.download import path_to_url File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 22, in <module> from pip._vendor import requests, six File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/__init__.py", line 53, in <module> from .packages.urllib3.contrib import pyopenssl File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py", line 70, in <module> ssl.PROTOCOL_SSLv3: OpenSSL.SSL.SSLv3_METHOD, AttributeError: 'module' object has no attribute 'PROTOCOL_SSLv3'
- 核心矛盾:常规修复方案需要通过pip重装适配版本的requests库,但当前pip本身已经损坏无法启动,无法执行安装操作。
修复方案
以下方案均不需要依赖可正常运行的pip,可直接操作修复:
方案1:通过系统包管理器重装适配版本的pip(最稳定,优先推荐)
旧版手动安装的pip 1.5.6和系统当前高版本OpenSSL不兼容,Ubuntu官方源提供的pip版本已经做了适配,直接替换即可:
- 先清理损坏的旧pip残留:
sudo apt remove -y python-pip python3-pip sudo rm -rf /usr/local/lib/python2.7/dist-packages/pip* /usr/local/bin/pip /usr/local/bin/pip3 - 更新软件源后重新安装pip:
sudo apt update sudo apt install -y python-pip python3-pip - 执行
pip --version、pip3 --version验证,能正常输出版本信息即修复完成。
方案2:通过官方引导脚本重装新版pip
如果需要使用官方最新版pip,可以用Python解释器直接运行引导脚本安装,不需要依赖现有pip:
- 下载对应Python版本的官方get-pip引导脚本到本地。
- 执行对应命令完成安装:
# 修复Python2的pip sudo python get-pip.py # 修复Python3的pip sudo python3 get-pip.py - 脚本执行完成后会自动覆盖旧的损坏版本,验证版本输出正常即可。
方案3:临时修改文件绕过报错(应急使用)
如果暂时不方便重装,可以直接修改报错文件临时修复:
- 用文本编辑器打开报错对应的py文件:
sudo vi /usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py - 定位到第70行附近的
ssl.PROTOCOL_SSLv3: OpenSSL.SSL.SSLv3_METHOD,配置项,直接注释或者删除该行,保存退出。 - 此时pip可以临时正常运行,建议后续尽快升级到新版pip,避免后续出现其他兼容性问题。
内容的提问来源于stack exchange,提问作者marc.soda
相关产品推荐
相关产品推荐

