pip安装失败,并显示“连接错误:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:598)”


397

我是Python的新手,并尝试> pip install linkchecker在Windows 7上使用。

  • 无论软件包如何,pip安装都会失败。例如,> pip install scrapy还会导致SSL错误。
  • 原始安装的Python 3.4.1包含pip 1.5.6。我尝试做的第一件事是安装linkchecker。Python 2.7已经安装,它是ArcGIS附带的。python并且pip直到我安装3.4.1时才可从命令行使用。
  • > pip search linkchecker作品。可能是因为点子搜索无法验证站点的SSL证书。
  • 我在公司网络中,但是我们没有通过代理访问Internet。
  • 每台公司计算机(包括我的计算机)都具有受信任的根证书颁发机构,该证书颁发机构出于各种原因而被使用,包括启用对到https://google.com的 TLS流量的监视。不确定是否与此有关。

这是运行后我的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

1
恰恰相反!默认情况下,Python 3.4.1和更早版本不进行证书验证。如果您使用的是Python 3.4.2,我会认为是问题所在。(请参阅问题21013邮件列表上的该线程。请注意,这是一个很长的线程的开头。)对不起,我实际上没有帮助!
Cody Piersall 2014年

3
检查您是否打开了提琴手并将其关闭。Fiddler尝试破坏SSL,这会破坏点数,当我关闭fiddler pip对我有用时。当我关闭提琴手一切正常的话
何塞-巴博萨

Answers:


639

-----> pip install gensim config --global http.sslVerify否

只需使用“ config --global http.sslVerify false”语句安装任何软件包

您可以通过将pypi.org和设置files.pythonhosted.org为受信任的主机来忽略SSL错误。

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>

注意:在2018年4月的某个时候,Python软件包索引从迁移pypi.python.orgpypi.org。这意味着使用旧域的“受信任主机”命令不再起作用。

永久修复

自发布pip 10.0起,您应该能够通过pip自我升级永久解决此问题:

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools

或者通过重新安装以获得最新版本:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

(…,然后get-pip.py与相关的Python解释器一起运行)。

pip install <otherpackage>应该在此之后工作。如果没有,那么您将需要做更多的事情,如下所述。


您可能需要将信任的主机和代理添加到配置文件中

pip.ini(Windows)或pip.conf(unix)

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

替代解决方案(安全程度较低)

大多数答案可能会带来安全问题。

帮助轻松安装大多数python软件包的两个解决方法是:

  • 使用easy_install:如果您确实很懒,不想浪费很多时间,请使用easy_install <package_name>。请注意,找不到某些软件包,或者会产生一些小错误。
  • 使用Wheel:下载python软件包Wheel并使用pip命令pip install wheel_package_name.whl安装该软件包。

7
您的更新使我受益匪浅。在我的情况下,公司防火墙将自身插入为SSL连接的可信主机。我以为代理设置错误,但添加详细说明问题出在SSL。更改索引URL可以解决此问题。
农民

11
太棒了,谢谢!受信任的主机似乎就足够了,即。pip install --trusted-host pypi.python.org pypi_package。使用--verbose表示没有--trusted-host,HTTPS连接失败,而尝试使用相同的HTTPS连接(不是HTTP)--trusted-host却成功。
奥利弗2015年

12
使用HTTP版本(甚至信任它)是否也存在安全风险?
圣保罗Ebermann

3
您可以将其设置为忽略--index-url参数的简称,尝试使用此命令也应该可以:pip install --trusted-host pypi.python.org pythonPackage
Alter Hu

8
它对我不起作用。在macbookpro 15英寸Python 2.7 pip 9.0.1上运行mac os high sierra我尝试了两种方法:sudo -H pip install --trusted-host pypi.python.org numpy和sudo pip install --trusted-host pypi.python.org numpy总是给我同样的错误:“确认ssl证书时出现问题:[SSL:TLSV1_ALERT_PROTOCOL_VERSION] tlsv1警报协议版本(_ssl.c:661)-跳过找不到符合要求的版本”
DaniPaniz

123

您可以使用以下参数指定证书:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker

请参阅:文档»参考指南»点

如果指定您公司的根证书无效,则可能无法使用cURL:http : //curl.haxx.se/ca/cacert.pem

您必须使用PEM文件而不是CRT文件。如果您有CRT文件,则需要将该文件转换为PEM。注释中有报告说,该报告现在可用于CRT文件,但我尚未验证。

还要检查:SSL证书验证


1
卷曲是安全的。我建议使用它。
史蒂夫·陶伯

1
@JeremyCook,这可能是您服务器上的时间,如果过去,则可能是验证过程
Giovanni Bitliner 2015年

1
不支持CRT格式,仅支持PEM格式。您将需要使用openssl将CRT转换为PEM格式。您还应该验证下载的捆绑软件是否包含正确的根CA。请参阅上面的详细信息我的答案:stackoverflow.com/a/28724886/41957
chnrxn

1
@ JeremyCook,PEM /证书并非直接来自您从中下载它们的第三方。他们从原始来源收集了证书。除非第三方拥有正确的密钥(只有其他人拥有),否则第三方无法生成其他人的证书。
chnrxn

4
@endolith-查看pip.pypa.io/en/stable/user_guide/#configuration似乎可以使用环境变量或pip.conf文件来永久引用它们,而无需在命令上指定
Cinderhaze

63

kenorb的答案非常有用(而且很棒!)。
在他的解决方案中,也许这是最简单的解决方案: --trusted-host

例如,在这种情况下,您可以

pip install --trusted-host pypi.python.org linkchecker

不需要pem文件(或其他任何文件)。


这也适用于其他命令,例如pip list --trusted-host pypi.python.org --outdated
Igor

60

对我来说,问题的解决,创建一个文件夹 pip,一个文件:pip.iniC:\Users\<username>\AppData\Roaming\ 例如:

C:\Users\<username>\AppData\Roaming\pip\pip.ini

我在里面写道:

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

我重新启动python,然后pip永久信任这些站点,并使用它们从中下载软件包。

如果在Windows上找不到AppData文件夹,请写入%appdata%文件资源管理器,它将出现。


奇怪的是,这对我的Win10机器没有帮助:/
mcandre

1
在工作中,Windows 10环境使用Cmder控制台模拟器。--trusted-host用来解决“'SSLError(SSLCertVerificationError(1,'[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书”)问题。今天它停止工作。我放置了pip文件夹的副本(取自../AppData/Roaming/中的../AppData/Local/),一切都再正确不过了,我的本地python世界再次感谢您
IdusOrtus,

1
大!非常感谢你。--trusted-host现在不适用于我,但是您的解决方案有所帮助。
亚历山大·普罗科菲耶夫

1
为什么没有这个下载安装Python时>
98Ed

太棒了!我正在搜索与GIT,公司的代理服务器,SSL相关的错误,而它只是与pip有关。谢谢,我希望此评论使像我一样困惑的人们到这里来。
negas

41

答案是非常相似的,并且有些令人困惑。就我而言,就是公司网络中的证书。我能够使用以下方法解决该问题:

pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv

如这里所见。如果不需要详细的输出,则可以省略-vvv参数


10
只有一个可以解决我的问题,谢谢。
Gringo Suave

太棒了,这也是唯一为我工作的人!
ethikz

之所以有效,是因为今天我在某些代理中脱颖而出,该代理可以剥离常规SSL。当成年人运行网络时,通常不需要指定受信任的主机。
MrChrister

这也对我有用。上面没有用
Srinath Ganesh

32

永久修复

pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org

例如:

pip install <package name> --trusted-host pypi.org --trusted-host files.pythonhosted.org

24

要一劳永逸地解决此问题,您可以验证您是否有pip.conf文件。

pip.conf根据文档,这是您应该在的位置:

在Unix上,默认配置文件是:$HOME/.config/pip/pip.conf尊重XDG_CONFIG_HOME环境变量。

在macOS上,配置文件是$HOME/Library/Application Support/pip/pip.conf目录是否$HOME/Library/Application Support/pip存在$HOME/.config/pip/pip.conf

在Windows上,配置文件为%APPDATA%\pip\pip.ini

在virtualenv内部:

在Unix和macOS上,文件为 $VIRTUAL_ENV/pip.conf

在Windows上,文件为: %VIRTUAL_ENV%\pip.ini

pip.conf应该看起来像:

[global]
trusted-host = pypi.python.org

pip install linkcheckerlinkchecker创建pip.conf文件后安装无投诉。


1
$ HOME / Library / Application Support / pip在我的机器上不存在,是否有其他位置?
42shadow42 '18 -10-1

pip自从我发布此答案以来,似乎用户指南已更新。我更新了macOS的答案。有帮助吗?
Alex-Antoine Fortin

不会影响我的Win10计算机上的SSL错误:/
mcandre

在MacOSX上不能解决问题。
MoDJ '19

我在macOS上。如果您使用安装python3,请brew确保您正在使用pip3并创建pip.confas $HOME/.config/pip/pip.conf。我为我工作。
阿努

23

我发现的最直接的方法是,从https://www.digicert.com/digicert-root-certificates.htm#roots从DigiCert下载和使用“ DigiCert高保证EV根CA”。

您可以通过单击地址栏中的锁定图标来访问https://pypi.python.org/以验证证书颁发者,或通过使用openssl来提高您的怪胎信誉:

$ 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的名称。

要一次性完成,请执行以下操作:

  1. 从DigiCert 下载CRT
  2. 将CRT转换为PEM格式
  3. 将PIP_CERT环境变量导出到PEM文件的路径

(最后一行假设您正在使用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。


4
使用您的答案将我们公司的根CA导出到PIP_CERT变量,并在尝试了所有其他方法(包括“ pip --cert cert.pem”)之后,按您的方式工作了……只是pip安装软件包。大+1-是的,我们有firewal / proxy / utm。
马龙

在Mac Mojave上,这仍然对我失败。我完全按照3个步骤操作,但仍然出现“错误:pip配置了需要TLS / SSL的位置,但是Python中的ssl模块不可用”。我尝试了所有--trusted-host和--cert选项,并且pip无法正常工作。我尝试升级pip并收到SSL错误。我从头开始用curl安装了pip,但是在运行pip时仍然出现错误。是时候

21

您可以通过以下方式解决问题CERTIFICATE_VERIFY_FAILED

  • 使用HTTP代替HTTPS(例如--index-url=http://pypi.python.org/simple/)。
  • 使用--cert <trusted.pem>CA_BUNDLE变量指定备用CA捆绑包。

    例如,您可以从Web浏览器转到失败的URL,然后将根证书导入到您的系统中。

  • 运行python -c "import ssl; print(ssl.get_default_verify_paths())"以检查当前的(验证是否存在)。

  • OpenSSL具有一对环境(SSL_CERT_DIRSSL_CERT_FILE),可用于指定不同的证书数据库PEP-476
  • 用于--trusted-host <hostname>将主机标记为可信。
  • 在Python中verify=False用于requests.get(请参阅:SSL证书验证)。
  • 使用--proxy <proxy>以避免证书检查。

有关更多信息,请参见套接字对象的TLS / SSL包装器-验证证书


从第一点开始,如何使用pip命令指定HTTP?
rayzinnz

1
@rayzinnz我已经添加了示例。
kenorb

16

正确设置时间和日期!

对我来说,结果表明我的日期和时间在Raspberry Pi上配置错误。结果是使用https://files.pythonhosted.org/服务器,所有SSL和HTTPS连接均失败。

像这样更新它:

sudo date -s "Wed Thu  23 11:12:00 GMT+1 2018"
sudo dpkg-reconfigure tzdata

或直接以Google的时间为准:

参考:https : //superuser.com/a/635024/935136

sudo date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
sudo dpkg-reconfigure tzdata

几个小时让我发疯-谢谢。对我来说,PI的时间缩短了10天,这会导致(会出现)在pip安装期间出现各种错误。
SteveJ '18 -10-24

13

我最近遇到了这个问题,因为我公司的Web内容过滤器使用自己的证书颁发机构,以便可以过滤SSL流量。在我的情况下,PIP似乎没有使用系统的CA证书,从而产生了您提到的错误。后来将PIP降级到1.2.1版会带来一系列问题,因此我回到了Python 3.4附带的原始版本。

我的解决方法非常简单:使用easy_install。它要么不检查证书(例如旧的PIP版本),要么知道使用系统证书,因为它每次都对我有用,我仍然可以使用PIP卸载使用easy_install安装的软件包。

如果那行不通,并且您可以访问没有问题的网络或计算机,则可以始终设置自己的个人PyPI服务器:如何在没有镜像的情况下创建本地自己的pypi存储库索引?

我几乎做到了,直到我尝试将其easy_install作为最后的努力。


这里同样的问题。另一个解决方法是将公司的根证书导出为文件,并告知pip将其与一起使用--cert MyCompanyRootCA.crt
glibdud

10

您可以尝试使用http而不是https来绕过SSL错误。当然,就安全性而言,并不是最佳选择,但是如果您急于使用它,可以采取以下措施:

pip install --index-url=http://pypi.python.org/simple/ linkchecker

1
我期待您的建议行之有效。疯狂,我得到了完全相同的错误,其中包括第一个Could not fetch URL http://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
杰里米·库克

3
好的,因此,另一个解决方法是在此处下载pypi.python.org/pypi/LinkChecker/9.3中提供的tar.gz软件包,并通过以下方式进行安装:pip install LinkChecker-9.3.tar.gz
Augusto Destrero,2014年

3
但是,如果要安装的软件包具有依赖项,则还必须下载并安装所有依赖项,如果依赖项太多,这可能会成为噩梦。
2014年

1
对我来说,我必须下载whl(对于我的pyserial案例)并安装它。这样就得到了tar.gz尚未收集的依赖项...所以,也许是@baxeico python -m pip install pyserial-3.4-py2.py3-none-any.whl的另一种选择这些都不起作用:1. --cert cacert.pem 2.导出公司证书,转换为PEM 3.在cygwin中安装easy_install 4. --trusted-host
charo

1
现已开始使用,直到2017年为止-HTTP访问已被完全切断。mail.python.org/pipermail/distutils-sig/2017-October/…–
gbtimmon

8

使用答案

pip install --trusted-host pypi.python.org <package>

工作。但是,您必须检查是否存在重定向或缓存pip命中。在Windows 7上pip 9.0.1,我必须运行

pip install \
  --trusted-host pypi.python.org \
  --trusted-host pypi.org \
  --trusted-host files.pythonhosted.org \
  <package>

您可以使用详细标志找到它们。


7

我使用easy_install安装了pip 1.2.1,并升级到了最新版本的pip(当时为6.0.7),可以在我的情况下安装软件包。

easy_install pip==1.2.1
pip install --upgrade pip

7

您有4个选择:

使用证书作为参数

$ pip install --cert /path/to/mycertificate.crt linkchecker

在证书中使用证书 pip.conf

创建此文件:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

并添加以下行:

[global]
cert = /path/to/mycertificate.crt

忽略证书并使用HTTP

$ pip install --trusted-host pypi.python.org linkchecker

忽略证书并在pip.conf中使用HTTP

创建此文件:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

并添加以下行:

[global]
trusted-host = pypi.python.org

资源


6

首先,

    pip install --trusted-host pypi.python.org <package name>

没有为我工作。我一直收到CERTIFICATE_VERIFY_FAILED错误。但是,我在错误消息中注意到它们引用了“ pypi.org”站点。因此,我将其用作受信任的主机名,而不是pypi.python.org。那几乎使我到了那里。CERTIFICATE_VERIFY_FAILED仍使加载失败,但是稍后。找到对失败网站的引用,我将其作为受信任的主机。最终对我有用的是:

    pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>

5

我不确定这是否相关,但是我有一个类似的问题,可以通过将这些文件从Anaconda3 / Library / bin复制到Anaconda3 / DLLs来解决:

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll


使用Anaconda 2019.03,我已将以下文件从<Anaconda3文件夹> / Library / bin复制到<Anaconda3> / DLLs libcrypto-1_1-x64.dll libcrypto-1_1-x64.pdb libssh2.dll libssl-1_1-x64.dll libssl- 1_1-x64.pdb然后我添加了一个ConnectTimeout错误,因此更新了代理配置。condarc
MordicusEtCubitus

作品。伙计,你是GENIUS!我一直在论坛上漫游1.5小时,只是为了找到这个被低估且简单的解决方案。
ivan866

4

pip install ftputil在64位Windows 7 Enterprise上尝试使用ActivePython 2.7.8,ActivePython 3.4.1和“常规” Python 3.4.2时遇到了相同的问题。所有尝试均以与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。

该bug于2013年3月报告,目前仍在打开:https : //github.com/pypa/pip/issues/829


这也为我工作。虽然首先降级到较旧版本的pip似乎是一个坏主意,但我正在处理旧的django软件包,因此旧的pip版本实际上与其他软件包匹配。
mknaf

发行829现在已关闭。
Ortomala Lokni 2015年

3

直到我使用--verbose选项查看它想要进入files.pythonhosted.org而不是pypi.python.org为止,此页面上的所有内容都对我没有作用:

pip install --trusted-host files.pythonhosted.org <package_name>

因此,请通过--verbose选项检查实际失败的URL。


2

我通过删除我的点子并安装了较旧版本的点子来解决此问题:https : //pypi.python.org/pypi/pip/1.2.1


虽然此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。- 评分
apomene

@apomene OP应该怎么做,include the essential parts of the answer here因为它是二进制文件的链接...?
托马斯·阿尤布

@ThomasAyoub,我相信您已经知道,当将答案标记为唯一链接答案时,上述消息是从SO自动填充的
apomene

@apomene没有回答我的问题,我仍然看不到OP可以/应该添加什么?
托马斯·阿尤布

1
@ThomasAyoub,要进一步详细说明,我的评论(SO)表示该问题简短且仅链接,这意味着最好将其作为评论。我的意图不是明确声明OP应该添加重新链接的详细信息,而是详细说明为什么这可以回答问题。
apomene's

2

您可以尝试忽略“ https”:

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  [your package..]

1
如果您甚至对pip版本有其他问题,也可以尝试一下 pip install --trusted-host pypi.python.org --upgrade pip –
Smaillns,

2

一种解决方案(对于Windows)是pip.ini%AppData%\pip\文件夹上创建一个名为的文件(如果该文件夹不存在,则创建该文件夹)并插入以下详细信息:

[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port

...然后我们可以执行安装指令:

pip3 install PyQt5

另一个选择是使用代理和证书的参数来安装软件包。

$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
   --cert C:/certs/python_root.pem PyQt5

要将证书*.cer文件转换为所需*.pem格式,请执行以下指令:

$ openssl x509 -inform der -in python_root.cer -out python_root.pem

希望这对某人有帮助!


1
对于其他操作系统,请查看Alex-Antoine Fortin的答案
Dinei

不需要代理,只需证书。我跑了 pip3.6 config set global.cert '/<path>/server.crt'
avatarofhope2 '18

2

就我而言,这是由于SSL证书是由公司内部CA签署的。使用类似的解决方法pip --cert无济于事,但以下软件包提供了帮助:

pip install pip_system_certs

参见:https : //pypi.org/project/pip-system-certs/

该软件包修补pip并在运行时请求使用默认系统存储中的证书(而不是捆绑的证书ca)。

这将使pip可以验证与cert的服务器之间的tls / ssl连接是否受系统安装信任。


1
看来需要安装pip_sysem_certs才能使[SSL:CERTIFICATE_VERIFY_FAILED]错误无效,问题是,尝试安装它时出现了[SSL:CERTIFICATE_VERIFY_FAILED]错误...
Athos

在某些时候这可能是一个解决方案,但是pip_system_certs完全破坏了我的Python环境,因此这不是一个好答案。不要安装pip_system_certs。有关更多信息,请参见stackoverflow.com/questions/27835619/…
h0r53

1

对我来说,这是因为以前我正在运行将代理(设置为提琴手),重新打开控制台或重新启动的脚本,以解决此问题。


可以通过在“工具|选项”中将“解密HTTPS流量”设置为“仅从浏览器...”来绕过Fiddler。这为我解决了这个问题。
tephyr

1

最近,我在Visual Studio 2015的python 3.6中遇到了同样的问题。花了2天后,我得到了解决方案及其对我来说很好的工作。

尝试使用pip或从Visual Studio安装numpy时出现以下错误收集numpy无法获取URL https://pypi.python.org/simple/numpy/:确认ssl证书时出现问题:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:748)-跳过找不到满足numpy要求的版本(来自版本:)找不到numpy的匹配发行版

解析度 :

对于Windows操作系统

  1. 打开->“%appdata%”如果不存在,则创建“ pip”文件夹。
  2. 在pip文件夹中创建“ pip.ini”文件。
  3. 编辑文件并编写
    [global]
    trusted-host = pypi.python.org保存并关闭文件。现在使用pip / visual studio安装,效果很好。

1

就我而言,我在最小的高山码头工人镜像中运行Python。它缺少根CA证书。固定:

apk update && apk add ca-certificates


1

瓦尔斯坦回答帮助了我。

我在电脑上的任何地方都找不到pip.ini文件。以下内容也是如此。

  1. 转到AppData文件夹。您可以通过打开命令提示符并键入echo%AppData%来获取appdata文件夹。

使用命令提示的AppData位置

或者直接在Windows资源管理器中键入%AppData%。

Windows资源管理器中AppData的位置

  1. 在该appdata文件夹内创建一个名为pip的文件夹。

  2. 在您刚创建的pip文件夹中,创建一个名为pip.ini的简单文本文件。

  3. 使用您选择的简单编辑器将以下配置设置粘贴到该文件中。

pip.ini文件:

[list]
format=columns

[global]
trusted-host = pypi.python.org pypi.org

您现在应该可以进行了。



0

对我而言,建议的方法都无效-使用cert,HTTP,可信主机。

在我的情况下,切换到该程序包的另一个版本是可行的(在此实例中,paho-mqtt 1.3.1代替了paho-mqtt 1.3.0)。

看起来问题是特定于该软件包版本的。


0

如果您的系统中缺少某些证书,则可能会出现此问题。例如,在opensuse上安装ca-certificates-mozilla

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.