解决Python3 安装Scrapy和Twisted模块时出现[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

自己在网络上搜集了一下,大多数方法都不管用,后来自己根据报错的详细信息去改了库代码,最后成功安装。

一、网络上通用方法:

1.全局取消证书验证(当项目对安全性问题不太重视时,推荐使用,可以全局取消证书的验证,简易方便)

import ssl

ssl._create_default_https_context = ssl._create_unverified_context


2.使用ssl创建未验证的上下文,在url中传入上下文参数(当项目整体非常重视安全问题时,推荐这种方式,可以局部取消证书验证)

import ssl
 
context = ssl._create_unverified_context()


将context传入url函数的context参数中,比如

urllib2.urlopen('dest_url',context=context).read()


这样就解决了ssl:certificate_verify_failed这个问题,成功运行脚本
 

 

二、自己研究的方法:

打开文件: /usr/local/lib/python3.6/site-packages/setuptools/package_index.py

具体位置和Python3的安装位置有关系,可以用命令搜索: find / -name "package_index.py"

 

找到类 class PackageIndex(),在该类的初始化函数中__init__()中修改代码

#-----------------------------------------------------------
# 修改之前
#-----------------------------------------------------------
if use_ssl:
    self.opener = ssl_support.opener_for(ca_bundle)
else:
    self.opener = urllib.request.urlopen
#-----------------------------------------------------------



######   将上面代码删掉,重新添加下面一行代码   ######
#-----------------------------------------------------------
# 修改之后
#-----------------------------------------------------------
self.opener = urllib.request.urlopen
#-----------------------------------------------------------

********具体修改见代码注释********

上述方式改完后,重新通过pip安装Twisted和Scrapy,均可安装完成。谢谢观看!!!

 

自己搜集整理加上自己研究,转载请标明出处!!!!!!

你可能感兴趣的:(Python)