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

2022-01-30 00:00:00 python windows pip ssl

问题描述

我对 Python 很陌生,正在尝试 >pip install linkchecker 在 Windows 7 上.一些注意事项:

I am very new to Python and trying to > pip install linkchecker on Windows 7. Some notes:

  • 无论软件包如何,pip install 都会失败.例如,>pip install scrapy 也会导致 SSL 错误.
  • Python 3.4.1 的原版安装包括 pip 1.5.6.我尝试做的第一件事是安装链接检查器.Python 2.7 已经安装,它随 ArcGIS 一起提供.pythonpip 在我安装 3.4.1 之前无法从命令行使用.
  • <代码>>pip search linkchecker 有效.可能是因为 pip search 没有验证网站的 SSL 证书.
  • 我在公司网络中,但我们不通过代理访问互联网.
  • 每台公司计算机(包括我的)都有一个受信任的根证书颁发机构,用于各种原因,包括启用对 https:/的 TLS 流量的监控/google.com.不确定这是否与此有关.
  • pip install is failing no matter the package. For example, > pip install scrapy also results in the SSL error.
  • Vanilla install of Python 3.4.1 included pip 1.5.6. The first thing I tried to do was install linkchecker. Python 2.7 was already installed, it came with ArcGIS. python and pip were not available from the command line until I installed 3.4.1.
  • > pip search linkchecker works. Perhaps that is because pip search does not verify the site's SSL certificate.
  • I am in a company network but we do not go through a proxy to reach the Internet.
  • Each company computer (including mine) has a Trusted Root Certificate Authority that is used for various reasons including enabling monitoring TLS traffic to https://google.com. Not sure if that has anything to do with it.

这是我的 pip.log 在运行 pip install linkchecker 后的内容:

Here are the contents of my pip.log after running 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:UsersjcookAppDataLocalTemppip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
  File "C:Python34libsite-packagespipasecommand.py", line 122, in main
    status = self.run(options, args)
  File "C:Python34libsite-packagespipcommandsinstall.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "C:Python34libsite-packagespipeq.py", line 1177, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "C:Python34libsite-packagespipindex.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


解决方案

pip install gensim config --global http.sslVerify false

只需安装任何带有config --global http.sslVerify false"的软件包即可.声明

Just install any package with the "config --global http.sslVerify false" statement

您可以通过设置 pypi.orgfiles.pythonhosted.org 以及较旧的 pypi.python.org 作为可信主机.

You can ignore SSL errors by setting pypi.org and files.pythonhosted.org as well as the older pypi.python.org as trusted hosts.

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

注意:在 2018 年 4 月的某个时候,Python 包索引 从 迁移而来pypi.python.orgpypi.org.这意味着可信主机".使用旧域的命令不再起作用,但您可以同时添加两者.

Note: Sometime during April 2018, the Python Package Index was migrated from pypi.python.org to pypi.org. This means "trusted-host" commands using the old domain no longer work, but you can add both.

自 pip 10.0 发布以来,您应该能够通过升级 pip 本身来永久修复此问题:

Since the release of pip 10.0, you should be able to fix this permanently just by upgrading pip itself:

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

或者只需重新安装以获取最新版本:

Or by just reinstalling it to get the latest version:

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

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

(… and then running get-pip.py with the relevant Python interpreter).

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

pip install <otherpackage> should just work after this. If not, then you will need to do more, as explained below.

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

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

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

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


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

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

Most of the answers could pose a security issue.

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

Two of the workarounds that help in installing most of the python packages with ease would be:

  • 使用easy_install:如果你真的很懒,不想浪费太多时间,请使用easy_install <package_name>.请注意,某些软件包将找不到或会出现小错误.
  • 使用Wheel:下载Wheel的python包 并使用 pip 命令 pip install wheel_package_name.whl 安装包.
  • Using easy_install: if you are really lazy and don't want to waste much time, use easy_install <package_name>. Note that some packages won't be found or will give small errors.
  • Using Wheel: download the Wheel of the python package and use the pip command pip install wheel_package_name.whl to install the package.

相关文章