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

 驰诗勋 发布于 2022-12-20 11:16

我是Python的新手,并试图> pip install linkchecker在Windows 7上.一些说明:

无论封装,pip安装都失败了.例如,> pip install scrapy也会导致SSL错误.

Python 3.4.1的Vanilla安装包括pip 1.5.6.我尝试做的第一件事是安装linkchecker.Python 2.7已经安装,它随ArcGIS一起提供.pythonpip直到我安装3.4.1中不具备的命令行.

> pip search linkchecker作品.也许这是因为pip搜索不会验证网站的SSL证书.

我在公司网络中,但我们没有通过代理来访问互联网.

每台公司计算机(包括我的计算机)都有一个受信任的根证书颁发机构,其使用原因有多种,包括支持监控TLS流量到https://google.com.不确定这是否与它有关.

以下是运行后我的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 : 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

Vaulstein.. 566

您可以通过设置pypi.orgfiles.pythonhosted.org作为可信主机来忽略SSL错误.

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

注意:在2018年4月的某个时间,Python Package Index已迁移pypi.python.orgpypi.org.这意味着使用旧域的"trusted-host"命令不再起作用.

永久修复

自从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 应该在此之后工作.如果没有,那么您将需要做更多,如下所述.


您可能希望将可信主机和代理添加到配置文件中.

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

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

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

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

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

使用easy_install:如果你真的很懒,不想浪费太多时间,请使用easy_install .请注意,找不到某些包或会出现小错误.

使用Wheel:下载python包的Wheel并使用pip命令pip install wheel_package_name.whl安装包.

是不是使用HTTP版本(然后甚至信任它)也存在安全风险? (12认同)

太棒了,谢谢!可信主机似乎已足够,即.`pip install --trusted-host pypi.python.org pypi_package`.使用`--verbose`表示没有`--trusted-host`,HTTPS连接失败,而使用`--trusted-host`尝试(而不是HTTP)相同的HTTPS连接,但它成功. (11认同)

你的更新让我有所作为.在我的情况下,企业防火墙将自身插入SSL连接的可信主机.我认为代理设置错误,但添加详细显示问题是SSL.index-url更改解决了这个问题. (7认同)

它对我不起作用.在macbookpro上运行mac os high sierra 15"Python 2.7 pip 9.0.1我试过这两个: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) - 跳过无法找到满足要求的版本" (7认同)

你可以把它缩短为忽略--index-url参数,尝试这个命令也应该没问题:`pip install --trusted-host pypi.python.org pythonPackage` (3认同)

在CentOS 7.4上,我不得不将所有以下主机添加为受信任的,因为pypi.python.org请求显然会导致对其他两个请求的访问: - keep-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org (2认同)

`pip install --trusted-host pypi.python.org --trusted-host pypi.org `适合我.旧的pypi.python.org转发到pypi.org,所以你需要两者.`--verbose`标志引领我走过. (2认同)


Steve Tauber.. 113

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

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

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

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

您必须使用PEM文件而不是CRT文件.如果你有一个CRT文件,你需要将文件转换为PEM.评论中有报告说这现在适用于CRT文件,但我还没有验证.

另请检查:SSL证书验证.

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

    easy_install pip==1.2.1
    pip install --upgrade pip
    

    2022-12-20 11:17 回答
  • 使用的答案

    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>
    

    您可以使用详细标记找到这些.

    2022-12-20 11:17 回答
  • 答案非常相似,有点令人困惑.就我而言,我公司网络中的证书就是问题所在.我能够使用以下方法解决问题:

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

    如此处所见.如果不需要详细输出,则可以省略-vvv参数

    2022-12-20 11:17 回答
  • 你有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
    

    资源

    https://pip.pypa.io/en/latest/user_guide/#configuration

    2022-12-20 11:17 回答
  • 您有以下可能性来解决问题CERTIFICATE_VERIFY_FAILED:

    使用HTTP而不是HTTPS.

    使用--cert <trusted.pem>CA_BUNDLE变量指定备用CA包.

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

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

    OpenSSL有一对环境(SSL_CERT_DIR,SSL_CERT_FILE),可用于指定不同的证书数据库PEP-476.

    用于--trusted-host <hostname>将主机标记为受信任.

    在Python中使用verify=Falserequests.get(参见:SSL证书验证).

    使用--proxy <proxy>以避免证书检查.

    阅读更多信息:套接字对象的TLS/SSL包装器 - 验证证书.

    2022-12-20 11:17 回答
  • 您可以使用此参数指定证书:

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

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

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

    您必须使用PEM文件而不是CRT文件.如果你有一个CRT文件,你需要将文件转换为PEM.评论中有报告说这现在适用于CRT文件,但我还没有验证.

    另请检查:SSL证书验证.

    2022-12-20 11:17 回答
  • 设置时间和日期正确!

    Mabey我回答得有点迟了

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

    像这样更新它:

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

    2022-12-20 11:18 回答
  • 首先,

        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>
    

    2022-12-20 11:18 回答
  • kenorb的回答非常有用(太棒了!).
    在他的解决方案中,也许这是最简单的解决方案: --trusted-host

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

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

    pem文件(或其他任何东西)是不必要的.

    2022-12-20 11:18 回答
  • 永久修复

    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
    

    2022-12-20 11:18 回答
  • 您可以通过设置pypi.orgfiles.pythonhosted.org作为可信主机来忽略SSL错误.

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

    注意:在2018年4月的某个时间,Python Package Index已迁移pypi.python.orgpypi.org.这意味着使用旧域的"trusted-host"命令不再起作用.

    永久修复

    自从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安装包.

    2022-12-20 11:19 回答
  • 要一劳永逸地解决此问题,您可以验证您是否有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文件后没有抱怨安装.

    2022-12-20 11:20 回答
  • 我发现最直接的方法是从DigiCert下载并使用"DigiCert High Assurance EV Root CA",网址为https://www.digicert.com/digicert-root-certificates.htm#roots

    您可以访问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的名称.

    对于一次性工作,请执行以下操作:

      从DigiCert 下载CRT

      将CRT转换为PEM格式

      将PIP_CERT环境变量导出到PEM文件的路径

    (在运行pip之前,最后一行假定您使用的是bash shell).

    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.

    2022-12-20 11:20 回答
  • 您可以尝试使用http而不是https来绕过SSL错误.当然,这在安全性方面并不是最优的,但是如果你赶时间应该可以做到这一点:

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

    2022-12-20 11:20 回答
  • 对我来说,问题的解决,创建一个文件夹 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永久信任这些网站,并用它们从中下载包.

    2022-12-20 11:20 回答
  • 我最近遇到了这个问题,因为我公司的Web内容过滤器使用自己的证书颁发机构,因此它可以过滤SSL流量.在我的情况下,PIP似乎没有使用系统的CA证书,产生您提到的错误.将PIP降级到版本1.2.1后面会出现一系列问题,所以我回到了Python 3.4附带的原始版本.

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

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

    我几乎这样做,直到我尝试使用easy_install作为最后的努力.

    2022-12-20 11:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有