首页 文章

Brew 3.6.1的Brew安装:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败

提问于
浏览
7

我安装了python 3.6

brew install python3

并尝试从https下载带有 six.moves.urllib.request.urlretrieve 的文件,但它会抛出错误

ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:749)

在Python安装中(来自.pkg),README表示安装后需要运行 Install Certificates.command to

  • 安装 certifi

  • 符号链接到 certify 路径的证书路径

能够使用证书 .

但是,在brew安装中,此文件不存在,似乎不会运行 .

2 回答

  • 3

    看来,由于某些原因,Brew还没有运行Mac3的Python3包中的 Install Certificates.command . 此问题的解决方案是在 brew install python3 之后运行以下脚本(从 Install Certificates.command 复制):

    # install_certifi.py
    #
    # sample script to install or update a set of default Root Certificates
    # for the ssl module.  Uses the certificates provided by the certifi package:
    #       https://pypi.python.org/pypi/certifi
    
    import os
    import os.path
    import ssl
    import stat
    import subprocess
    import sys
    
    STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
                 | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP
                 | stat.S_IROTH |                stat.S_IXOTH )
    
    
    def main():
        openssl_dir, openssl_cafile = os.path.split(
            ssl.get_default_verify_paths().openssl_cafile)
    
        print(" -- pip install --upgrade certifi")
        subprocess.check_call([sys.executable,
            "-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"])
    
        import certifi
    
        # change working directory to the default SSL directory
        os.chdir(openssl_dir)
        relpath_to_certifi_cafile = os.path.relpath(certifi.where())
        print(" -- removing any existing file or link")
        try:
            os.remove(openssl_cafile)
        except FileNotFoundError:
            pass
        print(" -- creating symlink to certifi certificate bundle")
        os.symlink(relpath_to_certifi_cafile, openssl_cafile)
        print(" -- setting permissions")
        os.chmod(openssl_cafile, STAT_0o775)
        print(" -- update complete")
    
    if __name__ == '__main__':
        main()
    
  • 12

    我的Mac OS X解决方案:

    1)使用从官方Python语言网站下载的本机应用程序Python安装程序升级到Python 3.6.5 https://www.python.org/downloads/

    我发现这个安装程序比自制软件更好地更新新Python的链接和符号链接 .

    2)使用“./Install Certificates.command”安装新证书,该证书位于刷新的Python 3.6目录中

    cd“/ Applications / Python 3.6 /”sudo“./Install Certificates.command”

相关问题