我发现 Daniel F 和 mattdedek 的解决方案非常有用:使用 https URL,并升级 pip 以使其成为默认值。但这仍然没有为我解决问题。我在 Mac OS X / Python 3.4 下遇到了这个错误:
$ pip3 install Flask
Downloading/unpacking Flask
Cannot fetch index base URL https://pypi.python.org/simple/
Could not find any downloads that satisfy the requirement Flask
Cleaning up...
No distributions at all found for Flask
Storing debug log for failure in /Users/huttarl/.pip/pip.log
和 pip.log 基本上显示了同样的事情:
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/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 Flask
在朋友的帮助下,我了解到从 Python 3.4 升级到 3.8解决了这个问题。显然这是因为 Python 3 的较新版本之一包含更新的证书:
证书验证和 OpenSSL
该软件包包括其自己的 OpenSSL 1.1.1 私有副本。由 Keychain Access 应用程序和安全命令行实用程序管理的系统和用户钥匙串中的信任证书不被 Python ssl 模块用作默认值。/Applications/Python 3.8 中包含一个示例命令脚本,用于安装来自第三方 certifi 包 ( https://pypi.org/project/certifi/ ) 的默认根证书的精选捆绑包。双击安装证书以运行它。
捆绑的 pip 有自己的默认证书存储,用于验证下载连接。
在此升级并运行Install Certificates.command
后,pip3 install Flask
运行成功。
您可能已经在 Mac OS 中升级到 Python 3.6+,只是忽略了这个证书安装命令。在这种情况下,浏览到 Applications/Python 3.x 并双击Install Certificates.command
. (参见Mac OSX python ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:749))