关于python 3.6 ssl 权限的问题

作者: fred_33c7 | 来源:发表于2019-02-26 21:06 被阅读16次

    1. 问题

    当mac使用python3.6用urllib时候,会跳出错误,比如ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed这类的

    2. 解决

    网上的教程一般是输入如下的命令安装certificate commond:/Applications/Python\ 3.6/Install\ Certificates.command
    但是如果用brew安装的话,并没有这个目录,怎么办呢?
    新建一个新的python3文件,运行如下代码。就可以了

    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()
    

    相关文章

      网友评论

        本文标题:关于python 3.6 ssl 权限的问题

        本文链接:https://www.haomeiwen.com/subject/vagzyqtx.html