2017-06-20 138 views
2

我安装使用酿造安装的Python 3.6.1:SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败

brew install python3

蟒蛇3.6,并试图从HTTPS下载一个文件,six.moves.urllib.request.urlretrieve,但它引发错误

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

在Python安装(从.pkg)的,自述表明一个需要在安装后运行Install Certificates.commandto

  1. 安装certifi
  2. 符号链接的认证路径certify路径

能够使用证书。

但是,在brew安装中,该文件不存在,似乎也没有运行。

回答

3

由于某些原因,Brew似乎没有运行适用于Mac的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() 
+0

是什么一个做的,如果一个人没有根访问/ sudo的权利?谢谢。 –

相关问题