pip安装失败,连接错误:证书validation失败(_ssl.c:598)“
我对Python很> pip install linkchecker
,试图在Windows 7上> pip install linkchecker
。一些注意事项:
- pip安装失败,无论包装。 例如,
> pip install scrapy
也会导致SSL错误。 - Python 3.4.1的香草安装包括pip 1.5.6。 我试图做的第一件事是安装linkchecker。 Python 2.7已经安装,它随ArcGIS一起提供。 在安装3.4.1之前,
python
和pip
在命令行中是不可用的。 -
> pip search linkchecker
作品。 也许这是因为点子search不validation网站的SSL证书。 - 我在公司networking,但我们不通过代理上网。
- 每家公司计算机(包括我的)都有一个受信任的根证书颁发机构,因为各种原因,包括启用对https://google.com的 TLSstream量监控。 不知道这与它有什么关系。
这里是我的pip.log运行pip install linkchecker
后的内容:
Downloading/unpacking linkchecker Getting page https://pypi.python.org/simple/linkchecker/ Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598) Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker Getting page https://pypi.python.org/simple/ Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent) Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker Cannot fetch index base URL https://pypi.python.org/simple/ URLs to search for versions for linkchecker: * https://pypi.python.org/simple/linkchecker/ Getting page https://pypi.python.org/simple/linkchecker/ Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598) Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker Could not find any downloads that satisfy the requirement linkchecker Cleaning up... Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook... No distributions at all found for linkchecker Exception information: Traceback (most recent call last): File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main status = self.run(options, args) File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle) File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files url = finder.find_requirement(req_to_install, upgrade=self.upgrade) File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement raise DistributionNotFound('No distributions at all found for %s' % req) pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
新答案:
您可以使用index-url
忽略https
并将http
url作为parameter passing,然后将其设置为可信来源。
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org <package_name>
老答案:
大部分答案都可能构成安全问题。
有助于安装大部分python软件包的两种解决方法是:
- 使用easy_install :如果您真的懒惰,不想浪费太多时间,请使用
easy_install <package_name>
。 请注意,一些软件包将不会被发现或将给小错误。 - 使用Wheel :下载python软件包的wheel并使用pip命令
pip install wheel_package_name.whl
来安装软件包。
肯尼伯的答案是非常有用的(和伟大!)。
在他的解决scheme中,也许这是最简单的: – --trusted-host
例如,在这种情况下,你可以做
pip install --trusted-host pypi.python.org linkchecker
pem文件(或其他任何东西)是不必要的。
你可以用这个参数指定一个证书:
pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
请参阅: 文档»参考指南»pip
如果指定您的公司的根证书不起作用,也许cURL将工作: http : //curl.haxx.se/ca/cacert.pem
您必须使用PEM文件而不是CRT文件。 如果你有一个CRT文件,你将需要将文件转换为PEM
另请检查: SSL证书validation 。
我find的最直接的方法是下载并使用DigiCert的“DigiCert High Assurance EV Root CA”( https://www.digicert.com/digicert-root-certificates.htm#roots);
您可以访问https://pypi.python.org/ ,通过点击地址栏中的锁图标来validation证书颁发者,或者使用openssl来增加您的geek cred:
$ openssl s_client -connect pypi.python.org:443 CONNECTED(00000003) depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain 0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
证书链中的最后一个CN值是您需要下载的CA的名称。
为了一次性努力,请执行以下操作:
- 从DigiCert下载CRT
- 将CRT转换为PEM格式
- 将PIP_CERT环境variables导出到PEM文件的path中
(最后一行假定你正在使用bash shell),然后运行pip。
curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem
为了使这个可重复使用,把DigiCertHighAssuranceEVRootCA.crt放在一个共同的地方,并相应地在你的〜/ .bashrc中导出PIP_CERT。
您有以下可能性来解决CERTIFICATE_VERIFY_FAILED
问题:
- 使用HTTP而不是HTTPS。
-
使用
--cert <trusted.pem>
或CA_BUNDLE
variables指定备用CA软件包。例如,你可以去网页浏览器失败的URL,并将根证书导入你的系统。
-
运行
python -c "import ssl; print(ssl.get_default_verify_paths())"
来检查当前的(validation是否存在)。 - OpenSSL有一对环境(
SSL_CERT_DIR
,SSL_CERT_FILE
),可以用来指定不同的证书数据库PEP-476 。 - 使用
--trusted-host <hostname>
将主机标记为可信。 - 在Python中,对
requests.get
使用verify=False
(请参阅: SSL Cert Verification )。 - 使用
--proxy <proxy>
来避免证书检查。
有关套接字对象的更多信息,请参阅: TLS / SSL封装 – validation证书 。
您可以尝试使用http而不是https来绕过SSL错误。 当然这在安全性方面并不是最佳的 ,但是如果你很着急的话,它应该可以做到这一点:
pip install --index-url=http://pypi.python.org/simple/ linkchecker
我最近遇到了这个问题,因为我公司的Web内容filter使用自己的证书颁发机构,以便它可以过滤SSLstream量。 PIP似乎没有在我的情况下使用系统的CA证书,产生你提到的错误。 将PIP降级到版本1.2.1后来出现了自己的问题,所以我回到了Python 3.4附带的原始版本。
我的解决方法很简单:使用easy_install
。 要么它不检查证书(如旧的PIP版本),要么知道使用系统证书,因为它每次都适用于我,我仍然可以使用PIP卸载使用easy_install安装的软件包。
如果这不起作用,您可以访问不存在问题的networking或计算机,则可以始终设置您自己的个人PyPI服务器: 如何在不使用镜像的情况下创build本地pypi存储库索引?
我几乎这样做,直到我尝试使用easy_install
作为最后的努力。
我用easy_install安装了pip 1.2.1,并升级到最新版本的pip(当时是6.0.7),可以在我的情况下安装软件包。
easy_install pip==1.2.1 pip install --upgrade pip
有相同的问题尝试pip install ftputil
与64位Windows 7企业版的ActivePython 2.7.8,ActivePython 3.4.1,和“股票”Python 3.4.2的pip install ftputil
。 所有尝试失败与OP相同的错误。
通过降级到pip 1.2.1解决了Python 3.4.2的问题: easy_install pip==1.2.1
(请参阅https://stackoverflow.com/a/16370731/234235 )。 同样的修复也适用于ActivePython 2.7.8。
2013年3月报告的这个错误仍然存在: https : //github.com/pypa/pip/issues/829 。
为了解决sslvalidation问题,
这是我尝试和工作的东西。 当我尝试安装无法正确的软件时,出现错误,所以我把软件包名称放入了。
这告诉pip信任从我们下载的主机pypi.python.org并且信任它与我们的包裹。
pip install –trusted-host pypi.python.org ansible
pip安装–trusted-host pypi.python.org – 升级pip
我通过删除我的点子并安装旧版本的点子来解决这个问题: https : //pypi.python.org/pypi/pip/1.2.1
你可以尝试这个来忽略“https”:
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org [your package..]
要一劳永逸地解决这个问题,你可以validation你有一个pip.conf
文件。
这是你的pip.conf
应该在哪里,根据文件 :
在Unix上,默认的configuration文件是:
$HOME/.config/pip/pip.conf
,它考虑了XDG_CONFIG_HOME环境variables。在macOS上,configuration文件是
$HOME/Library/Application Support/pip/pip.conf
。在Windows上,configuration文件是
%APPDATA%\pip\pip.ini
。
你的pip.conf
应该是这样的:
[global] trusted-host = pypi.python.org
在创buildpip.conf
文件后, pip install linkchecker
安装了linkchecker
而没有发生抱怨。
对我来说这是因为以前我正在运行脚本,其中设置代理(对小提琴手),重新打开控制台或重新启动修复问题。
最近我在Visual Studio 2015中遇到了与python 3.6相同的问题。花费了2天之后,我得到了解决scheme并且对我的工作很好。
我得到下面的错误,而尝试使用点或从Visual Studio安装numpy收集numpy无法获取URL https://pypi.python.org/simple/numpy/ :确认SSL证书有问题:[SSL:CERTIFICATE_VERIFY_FAILED]证书validation失败(_ssl.c:748) – 跳过找不到满足要求numpy的版本(从版本:)找不到匹配的分布numpy
parsing度 :
对于Windows操作系统
- 打开 – >“%appdata%”如果不存在,创build“pip”文件夹。
- 在pip文件夹中创build“pip.ini”文件。
- 编辑文件并写入
[全球]
trusted-host = pypi.python.org保存并closures文件。 现在安装使用pip / visual studio它工作正常。
对于我来说,没有任何build议的方法 – 使用证书,HTTP,可信主机。
在我的情况下切换到不同版本的包(paho-mqtt 1.3.1,而不是本例中的paho-mqtt 1.3.0)。
看起来问题是特定于该包版本。
在我的情况下,我观察到,安装相关软件包时,PIP失败。 在我的情况下,python热客户端需要位置,这需要pbr。 pbr的安装失败了。 当我安装python-heatclient之前显式安装pbr,它按预期工作。
调用失败的venv/bin/pip install python-heatclient
调用成功
venv/bin/pip install pbr
venv/bin/pip install python-heatclient