关于python:pip install失败,出现“连接错误:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:598)”

pip install fails with “connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)”

我对python非常陌生,尝试在Windows7上使用> pip install linkchecker。一些注释:

  • 无论软件包是什么,PIP安装都会失败。例如,> pip install scrapy也会导致SSL错误。
  • python 3.4.1的普通安装包括pip 1.5.6。我尝试做的第一件事是安装LinkChecker。python 2.7已经安装,它附带了Arcgis。在我安装3.4.1之前,命令行没有提供pythonpip
  • > pip search linkchecker工程。也许这是因为PIP搜索不验证站点的SSL证书。
  • 我在一家公司的网络中,但我们不通过代理来连接互联网。
  • 每个公司计算机(包括我的)都有一个受信任的根证书颁发机构,用于各种原因,包括启用到https://google.com的TLS流量监控。不确定这与否有关。

下面是运行pip install linkchecker后pip.log的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
eq.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

  • 您使用的是python 3.4.2吗?
  • 3.4.1有没有一个新版本刚刚发布,解决了这个问题?
  • 完全相反!默认情况下,python 3.4.1及更早版本不执行证书验证。如果您使用的是Python3.4.2,我会认为这是问题所在。(见第21013期和邮件列表中的本条。注意,这是一条很长的线的开始。)对不起,我实在帮不上忙!
  • 检查小提琴是否打开和关闭。fiddler尝试打破ssl,当我关闭fiddler pip时,这会破坏pip。我关上小提琴,一切都好起来了
  • 超级用户.com/a/747127/13889
  • 对于任何使用AlpineLinux的人来说,运行apk add ca-certificates(如果还没有的话)可能会帮你解决这个问题。
  • 到目前为止,当pip升级到10时,他们已经将路径从pypi.python.org更改为files.pythonhosted.org,请将命令更新为pip--trusted host files.pythonhosted.org install python_包。有关更多信息,请参阅@vaulstein的答案


通过将pypi.orgfiles.pythonhosted.org设置为受信任主机,可以忽略SSL错误。

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

注:在2018年4月的某个时候,python包索引从pypi.python.org迁移到pypi.org。这意味着使用旧域的"受信任主机"命令不再有效。

永久固定

由于PIP 10.0的发布,您应该能够通过升级pip本身来永久地解决这个问题:

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

或者只需重新安装即可获得最新版本:

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

(然后使用相关的python解释器运行get-pip.py)。

之后,pip install 就可以工作了。如果没有,那么您需要做更多,如下所述。

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

pip.inipip.confUnix

1
2
3
4
[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

替代解决方案(不太安全)

大多数答案都可能造成安全问题。

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

  • 使用简易安装:如果你真的很懒惰,不想浪费太多时间,使用easy_install 。请注意,有些包找不到或会出现小错误。
  • 使用wheel:下载python包的wheel并使用pip命令pip install wheel_package_name.whl安装包。

  • 你的最新消息让我很高兴。在我的例子中,企业防火墙将自己作为SSL连接的受信任主机插入。我假设代理设置错误,但添加verbose表明问题是SSL。索引URL的更改解决了这个问题。
  • 太棒了,谢谢!可信主机似乎足够了,即pip install --trusted-host pypi.python.org pypi_package。使用--verbose表明,如果没有--trusted-host的话,https连接会失败,而使用--trusted-host尝试相同的https连接(不是http),但成功了。
  • 使用HTTP版本(甚至信任它)是否也存在安全风险?
  • 您可以将其简化为忽略--index url参数,尝试这个命令也应该是OK:pip install --trusted-host pypi.python.org pythonPackage
  • "pip install--trusted host pypi.python.org"为我工作。谢谢!
  • 你能把你的旧答案分成一个单独的帖子吗?在一篇文章中有多个答案有点令人困惑
  • 不工作>无法获取url pypi.python.org/simple packet/:403客户端错误:url:pypi.python.org/simple/-跳过需要ssl
  • 我得到了"没有这样的选项:--可信主机",但我通过使用"easy-install-pip==9.0.1"解决了这个问题,当我得到错误时,我使用了pip 1.5.6。
  • pypi.python.org现在只接受https连接。所以必须是--index-url=https://pypi.python.org/simple/
  • 如果您像我一样懒惰,而且喜欢在IDE中工作(在我的例子中是pycharm),您可以通过选中"可用包"窗口中的"选项"框并键入"--trusted host pypi.python.org"来添加该选项。
  • 这是一个黑客,不是一个解决方案。大多数情况下,如果您使用的是使用pip的安装脚本,则不会编辑其中的每一个脚本。
  • 它对我不起作用。在MacBookPro 15"python 2.7 pip 9.0.1上运行Mac OS high Sierra时,我尝试了两种方法:sudo-h pip install--受信任主机pypi.python.org numpy和sudo pip install--受信任主机pypi.python.org numpy。它总是给出相同的错误:"确认SSL证书时出现问题:[ssl:tlsv1u alertu protocolu version]tlsv1 alert protoc"ol版本(_ssl.c:661)-跳过找不到满足要求的版本"
  • @Danipaniz您可以下载numpy的.dmg文件并将其安装在Mac上。
  • @Danipaniz找不到满足需求的版本可能会出现错误,原因如下:系统时间还远未到(2014-01-01之前)。这可能会导致SSL验证错误,请参阅link-stackoverflow.com/questions/43127536/&hellip;
  • @沃斯坦感谢你的建议,但没有任何效果。(我知道我可以通过dmg安装pygame,但我不能用pip安装任何其他东西)。我试过每一次黑客,但仍然不起作用。我可以卸载它并重新安装1.2版本吗?它显然没有给出这个问题。
  • 我正在阅读以下链接:github.com/homebrew/legacy-homebrew/issues/41253,我认为问题可能在于SSL证书在另一个文件夹中,与一个PIP正在查找的相关。
  • 更新:我刚刚删除了pip和python 2.7。重新安装了两者(使用BREW和Python),现在它神奇地工作了。可能是链接搞砸了。谢谢:D
  • 在Centos7.4上,我必须添加所有受信任的主机,就像pypi.python.org请求显然会导致对其他两个主机的请求一样:可信主机pypi.org--可信主机pypi.python.org--可信主机files.pythonhosted.org
  • 对于我(Mac OS X High Sierra),最好的解决方法是使用pip download-d>然后pip install--no index--find links>
  • 到目前为止,当pip升级到10并且现在他们已经将路径更改为files.pythonhosted.org时,请将命令更新为pip--trusted host files.pythonhosted.org install<>
  • 我在trusted-host pypi.python.org上有一个解析器错误,我把它改为trusted-host: pypi.python.org(用:来工作)。
  • 即使在相应地配置了pip.ini之后,pippip3仍然在Windows10中出现相同的SSL证书验证错误。
  • 我已经设置好了,但现在我必须登录:User for files.pythonhosted.org:
  • 江户十一〔七〕为我工作。旧的pypi.python.org将转发到pypi.org,因此您需要两者。江户十一〔八〕旗领我通过。
  • 谢谢:>我在一个没有管理权限的代理后面安装了一个包,带我去解决这个问题。(path_to_python)\python.exe -m pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org --proxy=http://(proxy's IP and port) (package name)
  • 受信任主机不会在win10中修复ssl错误,无论是在pip.ini中还是作为cli标志:/
  • @Mcandre您是否尝试过按照答案中的建议使用wheel安装软件包?
  • @在我的例子中,问题不是pip或pypi,而是一个特定的包。bashate包似乎是从一个不相关的域下载工件,而Windows不知何故会感到困惑。
  • @麦坎德,谢谢!这可以帮助那些想要安装bashate包的人。
  • 除非我们升级libssl,否则这一切都不起作用!sudo apt-get update && sudo apt-get install --only-upgrade libssl-dev


可以使用此参数指定证书:

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

看到了吗?参考指南?匹普

如果指定您公司的根证书不起作用,那么curl-one可能会起作用:http://curl.haxx.se/ca/cacert.pem

您必须使用PEM文件而不是CRT文件。如果您有一个CRT文件,您将需要将该文件转换为PEM,在注释中有报告说,这现在可以与一个CRT文件一起使用,但我还没有验证。

另请检查:SSL证书验证。

  • 谢谢史提夫。我看到那个医生了,这似乎是解决我问题的一个可行办法。我在Windows7上,没有PEM文件,并且不愿意使用来自第三方的PEM(这是安全的吗??)如何创建一个PEM文件来完成任务?
  • 卷发一号是安全的。我建议你用那个。
  • 我使用curl cert运行命令,得到了相同的错误。
  • @Jeremybook你能告诉我你是如何用curl cert执行命令的吗?您是否将curl证书下载到本地磁盘并将文件系统路径传递给--cert参数?我认为--cert不支持URL。请求的页面是由digicert签名的,curl ca包含digicert,因此如果它不适用于curl,那将是非常奇怪的。
  • @piotrsobczyk我从raw.githubusercontent.com/bager/ca bundle/master/ca bundle&zwnj;&8203;crt下载了证书,并运行pip --cert C:\Python32\ca-bundle.crt install linkchecker。它导致了相同的"连接错误:[ssl:certificate_verify_failed]certificate verify failed(_ssl.c:598)"错误。
  • @Jeremybook可能是你服务器上的时间,如果是在过去,可能是验证过程。
  • 不支持CRT格式,只支持PEM格式。您需要使用OpenSSL将CRT转换为PEM格式。您还应该验证您下载的包是否包含正确的根CA。有关详细信息,请参阅上面的我的答案:stackoverflow.com/a/28724886/41957。
  • @Jeremybook,pem/certs不是直接来自您下载它们的第三方。他们从原始资料中收集证书。第三方不可能生成其他人的证书,除非他们拥有正确的密钥(只有其他人拥有)。
  • 是否有永久指定此证书的方法?
  • @endolith-查看pip.pypa.io/en/stable/user诳guide/诳配置,您可以使用环境变量,也可以使用pip.conf文件永久引用这些变量,而不必在命令上指定。
  • 现在和.crt合作得很好


Kenorb的回答非常有用(非常好!).在他的解决方案中,也许这是最简单的一个:--trusted-host

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

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

PEM文件(或其他任何文件)是不必要的。

  • 我发现它在我的Windows PC上运行得很好
  • 这也适用于其他命令,如pip list --trusted-host pypi.python.org --outdated
  • 这对我不起作用:(


答案很相似,有点混乱。在我的案例中,我公司网络中的证书就是问题所在。我可以用以下方法解决这个问题:

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

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

  • 只有一个能解决我的问题,谢谢。


我发现最简单的方法是从digicert下载并使用"digicert high assurance ev root ca",网址为:https://www.digicert.com/digicert root certificates.htm roots

您可以访问https://pypi.python.org/通过单击地址栏中的锁定图标来验证证书颁发者,或者通过使用openssl来增加您的geek cred:

1
2
3
4
5
6
7
8
9
10
11
$ 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环境变量导出到PEM文件的路径
  • (最后一行假设您正在使用bash shell)在运行pip之前。

    1
    2
    3
    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

    要使其重新可用,请将digicerthighasuranceevrootca.crt放在常见的地方,并在~/.bashrc中相应地导出pip-cert。

    • 使用您的答案将我们公司的根CA导出到pip-cert变量,最后在尝试了包括"pip--cert-cert.pem"在内的所有其他方法后,您的方法成功了……只需pip安装包。Big+1-是的,我们有一个防火墙/代理/UTM。


    为了一次性解决这个问题,您可以验证您有一个pip.conf文件。

    根据文件,您的pip.conf应该在这里:

    On Unix the default configuration file is: $HOME/.config/pip/pip.conf which respects the XDG_CONFIG_HOME environment variable.

    On macOS the configuration file is $HOME/Library/Application Support/pip/pip.conf if directory $HOME/Library/Application Support/pip exists else $HOME/.config/pip/pip.conf

    On Windows the configuration file is %APPDATA%\pip\pip.ini.

    在virtualenv中:

    On Unix and macOS the file is $VIRTUAL_ENV/pip.conf

    On Windows the file is: %VIRTUAL_ENV%\pip.ini

    您的pip.conf应该如下所示:

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

    创建pip.conf文件后,pip install linkchecker安装了linkchecker,没有抱怨。

    • 或/etc/pip.conf在UNIX系统范围内…
    • $home/library/application support/pip在我的机器上不存在,是否有其他位置?
    • 似乎自我发布此答案以来,pip用户指南已更新。我更新了MacOS的答案。有帮助吗?
    • 不影响我的Win10计算机上的SSL错误:/


    您可以通过以下方法来解决CERTIFICATE_VERIFY_FAILED的问题:

    • 使用HTTP而不是HTTPS。
    • 使用--cert 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 将主机标记为受信任。
    • 在python中,将verify=False用于requests.get(请参见:ssl cert verification)。
    • 使用--proxy 避免证书检查。

    在:tls/ssl wrapper for socket objects-verifying certificates上阅读更多信息。


    对我来说,通过创建文件夹解决了这个问题。pip,文件:pip.ini。在里面C:\Users\\AppData
    oaming\
    例如:

    1
    2
    C:\Users\<username>\AppData
    oaming\pip\pip.ini

    在里面我写道:

    1
    2
    3
    4
    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org

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

    • 奇怪的是,这对我的Win10机器没有帮助:/
    • 谢谢-这对我有用
    • 在Windows10环境中,使用命令管理器控制台模拟器。--用于解决"'sslerror(sslcertVerificationError(1,"[ssl:certificate_verify_failed]certificate verify failed:self-signed certificate in certificate chain"问题的受信任主机。今天它停止工作了。我在../appdata/roaming/中放置了一个pip文件夹(取自../appdata/local/)的副本,所有这些都再次适合我的本地python世界。多谢!


    我最近遇到这个问题是因为我公司的Web内容过滤器使用它自己的证书颁发机构来过滤SSL流量。在我的例子中,PIP似乎没有使用系统的CA证书,从而产生了您提到的错误。将pip降级到1.2.1版以后会出现自己的一组问题,所以我回到了Python3.4附带的原始版本。

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

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

    我几乎做到了这一点,直到我试图用easy_install作为最后的努力。

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


    您可以尝试使用HTTP而不是HTTPS来绕过SSL错误。当然,这在安全性方面不是最佳的,但是如果您赶时间的话,它应该做到以下几点:

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

    • 我期待你的建议能奏效。我疯狂地得到了同样的错误,包括第一个错误。
    • 看起来是个奇怪的网络问题。你能从浏览器访问pypi.python.org吗?
    • 是的,很奇怪。我可以从我的浏览器访问它,没问题。
    • 好的,另一个解决方法是下载tar.gz包,这里提供pypi.python.org/pypi/linkchecker/9.3,并使用:pip install linkchecker-9.3.tar.gz安装它。
    • 但是,如果要安装的包有依赖项,则必须下载并安装所有依赖项,如果它们很多,则这可能会成为一场噩梦。
    • 这是一个很好的建议,尽管我怀疑LinkChecker有更多的依赖关系,但我现在想处理。基于您的反馈和鼓励,这是完全奇怪的,我与它交谈,发现所有的SSL流量正在被我们的防火墙解密/重新加密。很可能是打嗝的原因。下周我要和我们的防火墙专家会面,制定一个解决方案。如果我发现任何对别人有用的东西,我会发回。
    • @JeremyBook的首要答案是为您的防火墙提供适当的解决方案。对于python内部的错误,提供信任公司防火墙的证书链可能是最好的选择。
    • 对于我来说,我必须下载whl(我的案例pyserial)并安装它。这提取了tar.gz未收集的依赖项…所以,也许whl是沿着@baxeico python-m pip安装pyserial-3.4-py2.py3-none-any.whl的另一个选项,对我来说这些都不起作用:1。--证书CACERT.PEM 2.出口公司证书,转换为PEM 3。在Cygwin 4中轻松安装。--可信主机
    • 截至2017年,现在的long系统已经完全停止了HTTP访问。mail.python.org/pipermail/distutils sig/2017年10月/&hellip;


    使用的答案

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

    工作。但是您必须检查是否有重定向或缓存pip正在命中。在使用pip 9.0.1的Windows7上,我必须运行

    1
    2
    3
    4
    5
    pip install \
      --trusted-host pypi.python.org \
      --trusted-host pypi.org \
      --trusted-host files.pythonhosted.org \
      <package>

    您可以在详细标志中找到这些。


    我安装了PIP 1.2.1,安装简单,升级到最新版本的PIP(当时为6.0.7),在我的情况下,它可以安装软件包。

    1
    2
    easy_install pip==1.2.1
    pip install --upgrade pip

    正确设置时间和日期!

    梅比,我回答得有点晚了,

    对我来说,我的日期和时间在覆盆子圆周率上配置错误。结果是,使用https://files.pythonhosted.org/服务器,所有SSL和HTTPS连接都失败。

    更新如下:

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

    • 几个小时来一直让我发疯——谢谢。在安装pip的过程中,pi时间被关闭了10天,导致了(看起来)各种各样的错误。


    您有4个选项:

    使用证书作为参数

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

    pip.conf中使用证书

    创建此文件:

    1
    2
    3
    $HOME/.pip/pip.conf (Linux)

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

    并添加这些行:

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

    忽略证书并使用HTTP

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

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

    创建此文件:

    1
    2
    3
    $HOME/.pip/pip.conf (Linux)

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

    并添加这些行:

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

    来源

    • https://pip.pypa.io/en/latest/user_-guide/配置


    首先,

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

    不适合我。我一直在获取证书"验证失败"错误。但是,我在错误消息中注意到它们引用了"pypi.org"站点。所以,我使用这个作为可信主机名,而不是pypi.python.org。这几乎把我带到了那里;装载仍然失败,证书验证失败,但在后来的一点上。找到对失败网站的引用后,我将其作为受信任的主机包含进来。最终对我起作用的是:

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

    在64位Windows7Enterprise上使用ActivePython2.7.8、ActivePython3.4.1和"stock"python3.4.2尝试pip install ftputil时也遇到了同样的问题。所有尝试均失败,错误与op相同。

    通过降级到pip 1.2.1:easy_install pip==1.2.1(参见https://stackoverflow.com/a/16370731/234235),解决了python 3.4.2的问题。同样的修复也适用于ActivePython 2.7.8。

    2013年3月报告的bug仍然存在:https://github.com/pypa/pip/issues/829。

    • 这对我也很管用。虽然一开始降级为旧版本的PIP似乎是个坏主意,但我处理的是旧的django包,因此旧的PIP版本实际上与其他包匹配。
    • 问题829现已关闭。


    在我使用--verbose选项查看它想要访问files.pythonhosted.org而不是pypi.python.org之前,此页面上的任何内容都对我无效:

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

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


    您可以尝试忽略"https":

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

    • 如果您在PIP版本上还有其他问题,您可以试试这个pip install --trusted-host pypi.python.org --upgrade pip –


    我通过删除我的PIP并安装旧版本的PIP解决了这个问题:https://pypi.python.org/pypi/pip/1.2.1

    • 虽然这个链接可以回答问题,但最好在这里包含答案的基本部分并提供链接以供参考。如果链接页发生更改,则仅链接答案可能无效。-从审查
    • @Apomene既然是一个指向二进制文件的链接,那么ope应该如何处理include the essential parts of the answer here
    • @Thomasayub,我相信你已经知道了,当把一个答案标记为唯一的链接答案时,上面的信息是从so自动填充的。
    • @没有回答我的问题的Apomene,我仍然不知道该添加什么操作?
    • @托马斯约布,更详细地说,我的评论(所以)表明,问题是简短的,只有联系,这意味着它最好是一个评论。我的意图并不是明确指出OP应该添加重新划分链接的细节,而是详细说明为什么这会回答这个问题。


    对我来说,这是因为以前我运行的脚本设置了代理(到fiddler),重新打开控制台或重新启动修复了问题。

    • 通过在"工具"选项中将"解密HTTPS流量"设置为"…仅从浏览器"可以绕过Fiddler。这解决了我的问题。


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

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

    决议:

    对于Windows操作系统

  • 打开->"%appdata%"创建"pip"文件夹(如果不存在)。
  • 在pip文件夹中创建"pip.ini"文件。
  • 编辑文件并写入[全球]可信主机=pypi.python.org保存并关闭文件。现在安装使用PIP/Visual Studio可以很好地工作。

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

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

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

    1
    pip3 install PyQt5

    另一个选项是使用代理和证书的参数安装包…

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

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

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

    希望这能帮助别人!

    • 对于其他操作系统,请看亚历克斯·安托万·福丁的回答。
    • 不需要代理,只需要我运行的证书;pip3.6 config set global.cert '//server.crt'


    沃斯坦的回答帮助了我。

    我在电脑上的任何地方都找不到pip.ini文件。下面也找不到。

  • 已转到appdata文件夹。您可以通过打开命令提示符并键入echo%appdata%来获取appdata文件夹。
  • AppData location using command prompt

    或者只需在Windows资源管理器中键入%appdata%。

    AppData location in windows explorer

  • 在该appdata文件夹中创建一个名为pip的文件夹。

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

  • 使用您选择的简单编辑器,通过该文件中的以下配置设置。

  • PIP.IN文件:

    1
    2
    3
    4
    5
    [list]
    format=columns

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

    你现在该走了。


    如果您已经使用make手动安装了python,则必须遵循以下答案:https://stackoverflow.com/a/42798679/6403406才能使其正常工作。


    在我的例子中,我运行的是最小阿尔卑斯Docker映像中的python。它缺少根CA证书。修复:

    apk update && apk add ca-certificates


    如果系统中缺少某些证书,则可能会出现此问题。例如,在OpenSUSE上,安装CA证书Mozilla


    到目前为止,当pip升级到10时,他们已经将路径从pypi.python.org改为files.pythonhosted.org。请将命令更新为pip--trusted host files.pythonhosted.org install python_包


    对我来说,所有建议的方法都不起作用——使用cert、http和可信主机。

    在我的例子中,切换到不同版本的包是有效的(本例中是paho mqtt 1.3.1,而不是paho mqtt 1.3.0)。

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