我对Python非常陌生,并试图在Windows 7上安装链接检查器。一些注意事项:

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 install linkchecker后我的pip.log的内容:

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

当前回答

在连接中设置代理,然后运行:

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

其他回答

答案非常相似,而且有点令人困惑。在我的案例中,我公司网络中的证书是问题所在。我能够使用以下方法来解决这个问题:

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

如图所示。如果不需要详细输出,-vvv参数可以省略

尽管有40个答案,但我认为没有一个完全解决了我的问题。

我在macOS Catalina 10.15.5上,在公司代理的后面。

在尝试安装或升级包时,提示以下错误

>>> pip install <package name>                                                                                                                           

Looking in indexes: https://pypi.org/simple, https://data:****@pypi.<company>.com/simple/
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)'))': <package name>
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)'))': <package name>

@Steve_Tauber的回答pip——cert /etc/ssl/certs/FOO_Root_CA。Pem安装链接检查器让我的方式有一部分。

我能够使用现有的cert文件成功安装包,如下所示:

pip install --cert /Users/me/opt/anaconda3/ssl/cert.pem --upgrade pip

但是我不想每次使用pip时都使用cert标志…

答案是更新环境变量:

CERT_PATH=/Users/me/opt/anaconda3/ssl/cert.pem
export SSL_CERT_FILE=${CERT_PATH}
export REQUESTS_CA_BUNDLE=${CERT_PATH}

现在我可以安装了。

TLDR:

pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r requirements.txt -vvv

pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <packageName> -vvv

所以,我已经有了30多个问题的答案,但在2020年6月(封锁期间),什么都对我没用。 这些都是在过去的不同时刻被给予的。我将努力让这个答案在未来的任何时候都适用。 问题是,当pip安装包时,它会尝试连接存储包的主机URL,并且在下载时不相信URL。

有两种方法可以解决这个问题: 容易的,不安全的: 1. 检查哪个URL被pip击中下载包。

pip install <packageName> -vvv

如果你仔细检查输出,你会发现它可能会指向一些URL,比如pypi.org或者pypi.python.org。

如果是,只需添加可信主机选项到命令如下:

pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <packageName> -vvv

或者如果你使用的是需求文件:

pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r requirements.txt -vvv

安全的方法:

转到这些URL并下载它们的公共证书(只要谷歌如何下载),创建一个链,将其存储为.pem文件,并运行以下命令:

pip --cert YourPemFile.pem install <packageName>

简短的回答

如果在家里使用公司的机器时遇到这种情况,在工作时再试一次。

细节

我周末遇到了这个。Pip和conda都坏了,无法安装或更新。SO很有帮助,但在公司机器上,许多答案都有问题——解决方案需要pip install(已经不能工作)或需要下载安装程序(我想下载的安装程序被防火墙设置禁止)。

对我有效的是当我上预科的时候再试一次。这很有效。事实证明,在家庭和工作中使用这台机器时,公司防火墙的设置是不同的。

首先,

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

对我没用。我一直得到CERTIFICATE_VERIFY_FAILED错误。然而,我在错误消息中注意到他们引用了“pypi.org”站点。因此,我使用this作为可信主机名,而不是pypi.python.org。这句话几乎把我带到了那里;使用CERTIFICATE_VERIFY_FAILED加载仍然失败,但在稍后的时间点。找到了失败的网站的引用,我把它作为一个可信任的主机。最终对我有用的是:

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