我正在尝试使用 pip
安装Python库,收到SSL错误:
~/projects/base pre-master± pip install xdict
Collecting xdict
Could not fetch URL https://pypi.python.org/simple/xdict/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping
Could not find a version that satisfies the requirement xdict (from versions: )
No matching distribution found for xdict
点数版本:pip 9.0.1
我该如何解决这个错误?
13 回答
对于Python2 WIN10用户:
1.彻底卸载python,包含所有文件夹 .
2.获取并安装最新的python-2.7.msi(版本2.7.15)
3.在第2步之后,您可能会发现已经安装了pip .
4.现在,如果您的系统没有更改,您可以使用pip立即安装软件包 . “tlsv1警报协议版本”将不会出现 .
我尝试了所有现有的修复程序而不是为我工作
我通过在https://www.python.org/downloads/mac-osx/下载.pkg重新安装python 2.7(也将安装pip)
安装后下载pkg为我工作
升级点如下:
注意:如果不在虚拟环境中,您可能需要使用上面的
sudo python
.(请注意,使用
pip
升级pip
,即pip install --upgrade pip
也无法正确升级 . 这只是一个鸡与蛋的问题 . 除非使用TLS> = 1.2,否则pip
将无效 . )如this detailed answer中所述,这是由于最近TIP对TIP的弃用 . 对于TLS版本1.0和1.1,Python.org站点有stopped support .
从Python状态页面:
For PyCharm (virtualenv) users:
对于Python 3用户,curl需要通过管道传送到
python3
:如果上述任何
curl
命令失败并出现相同的 "tlsv1 alert protocol version" 错误,请ensure系统的基础OpenSSL库至少为1.0.1版本,以使TLS v1.2正常工作 .用于 Build SSL连接的curl和pip(以及wget)depend on OpenSSL . 可以使用
$ openssl version
命令验证版本 .libcurl本身支持TLS 1.2,因为卷曲版本7.34,但是如果你有OpenSSL版本1.0.2(或更高版本),旧版本_854434也可以连接,默认情况下使用TLS 1.2 . 如果您缺少诸如curl之类的工具而无法安装它,也可以使用您喜欢的Web浏览器下载get-pip.py(或pip包本身)...
最后,如果仍然不行,另一件可以帮助的事情(特别是对于较旧的OS / Python版本)是确保安装以下Python包(与SSL和pip功能相关的依赖关系):
pyasn1, certifi, asn1crypto, cryptography, pyOpenSSL, urllib3
您可以通过在Python解释器中尝试此导入来检查哪一个丢失:
因为pip无法连接(还),只需通过您喜爱的Web浏览器逐个从pypi.org下载最新的轮子,然后按照上面列出的顺序使用
pip install --user <package-file.whl>
命令(或pip3
for Python 3)进行安装,以解决pip依赖关系 .注意:它应该以shell命令
$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev
(或Python 3的情况下为python3-dev
)开头,以确保可以构建这些Python包 .以下@ Anupam对OS X的回答导致我出现以下错误,无论我使用以下权限运行它:
最终工作的是从我的浏览器直接从PyPI下载一个更新的pip包(9.0.3) - https://pypi.org/simple/pip/,提取内容,然后在本地pip安装包:
这解决了我的
[SSL: TLSV1_ALERT_PROTOCOL_VERSION]
错误 .以下解决方案对我有用:
它还将
pip
升级到版本1.10.1@Anupam的解决方案对我有用 . 但是,我不得不使用
sudo
并指定我的虚拟Python环境的确切位置:要升级本地版本,我使用了一个轻微的变体:
如果您将pip和包保留在主目录下,如this gist中所述,则会出现此问题 .
检查您的TLS版本:
如果您的TLS版本低于1.2,则必须升级它,因为PyPI存储库处于早期TLS的弃用期 .
来源 - Time To Upgrade Your Python: TLS v1.2 Will Soon Be Mandatory
您可以使用以下命令升级TLS版本:
这应该可以解决您的问题 . 祝好运!
编辑:您可以使用自己的私有python包存储库下载包,无论TLS版本如何 . Private Python Package Repository
这对我有用,我安装了最新版本的pip然后安装了库( ciscoconfparse ) .
升级点数:
这对我有用 . 在python之前添加sudo
我也遇到了这个问题 . 根本问题是Python 2.7版本<2.7.9中的ssl库不再与pip机制兼容 .
如果你在Windows上运行,并且你(像我们这样)无法从不兼容的2.7版本FWIW轻松升级,我发现如果从另一个最新版本的Python(例如Python 2.7)中复制以下文件 . 15)上另一台安装机器:
它会有效地将您的SSL层“升级”为支持的层;然后我们再次使用pip,甚至升级pip .
我也在我的windows10上遇到了这个问题并尝试了所有的答案,但没有解决我的问题 .
之后,我发现pip配置文件已被修改 . 所以,我将
pip.ini
设置为原始默认配置,重新运行pip命令,它对我有用!总结我的情况:
检查pip.ini(通常在路径
C:\ProgramData\pip
下)已被修改;如果在步骤1中为是,请尝试将其重置为默认配置 .