Pytorch报urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]错误

问题描述

在调用torchvision.datasets.CIFAR10下载数据集的过程中,

trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
 download=True, transform=transform)

报如下错误

Traceback (most recent call last):
  File "D:/pythonCode/pytorch/Learn_Torchvision/Leran_datasets.py", line 13, in <module>
    trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
  File "C:\Users\Administrator\miniconda3\lib\site-packages\torchvision\datasets\cifar.py", line 66, in __init__
    self.download()
  File "C:\Users\Administrator\miniconda3\lib\site-packages\torchvision\datasets\cifar.py", line 144, in download
    download_and_extract_archive(self.url, self.root, filename=self.filename, md5=self.tgz_md5)
  File "C:\Users\Administrator\miniconda3\lib\site-packages\torchvision\datasets\utils.py", line 427, in download_and_extract_archive
    download_url(url, download_root, filename, md5)
  File "C:\Users\Administrator\miniconda3\lib\site-packages\torchvision\datasets\utils.py", line 130, in download_url
    url = _get_redirect_url(url, max_hops=max_redirect_hops)
  File "C:\Users\Administrator\miniconda3\lib\site-packages\torchvision\datasets\utils.py", line 78, in _get_redirect_url
    with urllib.request.urlopen(urllib.request.Request(url, headers=headers)) as response:
  File "C:\Users\Administrator\miniconda3\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Users\Administrator\miniconda3\lib\urllib\request.py", line 525, in open
    response = self._open(req, data)
  File "C:\Users\Administrator\miniconda3\lib\urllib\request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "C:\Users\Administrator\miniconda3\lib\urllib\request.py", line 502, in _call_chain
    result = func(*args)
  File "C:\Users\Administrator\miniconda3\lib\urllib\request.py", line 1393, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
  File "C:\Users\Administrator\miniconda3\lib\urllib\request.py", line 1353, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1123)>

原因分析:

通过调试定位到torch.utils.data.utils.py源文件_get_redirect_url函数中调用urllib.request.urlopen时出的问题。
在这里插入图片描述
经过网上资料分析:这个错误是因为Python 2.7.9 之后引入了一个新特性,当使用urllib.urlopen一个 https 的时候会验证一次 SSL证书。当目标使用的是自签名的证书时就会报urllib.error.URLError错误。

解决方案:

import ssl

ssl._create_default_https_context = ssl._create_unverified_context
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
 download=True, transform=transform)

最后下载成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 回答1: mmdetect pip._vendor.urllib3.exceptions.readtimeouterror: httpsconnectionpoo是Python中的一个错误。该错误通常在使用mmdetect库发生,它指示在建立HTTP连接过程中发生了超错误。 mmdetect是一个用于目标检测的Python库,它依赖于urllib3库来进行网络通信。在使用mmdetect,当程序发起HTTPS连接请求,如果连接的建立超过了预设的超间,就会抛出一个readtimeouterror异常。 这个错误是由urllib3库中的异常模块引发的。urllib3是一个用于处理HTTP连接的模块,其中的exceptions模块用于定义和处理可能发生的异常情况。 httpsconnectionpoo是一个与连接池相关的异常。连接池是一个维护和管理HTTP连接的数据结构,当连接数超过一定限制,连接池会对连接进行复用和重用。如果连接池中的连接数达到上限,进一步的连接请求就会被拒绝,并抛出一个httpsconnectionpoo异常。 要解决这个问题,我们可以尝试以下几种方法: 1. 增加超间:可以通过增加超间来解决该问题。可以尝试将超间设置得更大一些,以便允许更长的连接建立间。 2. 检查网络连接:检查网络连接是否正常,确保可以正常访问要连接的目标网站。 3. 更新相关库:检查mmdetect和urllib3库是否是最新版本,如果不是,尝试更新到最新版本,以确保使用的是最新的稳定版本。 4. 考虑使用其他库:如果仍然无法解决问题,可以考虑尝试其他目标检测的库,以避免这个特定的问题。 总之,mmdetect pip._vendor.urllib3.exceptions.readtimeouterror: httpsconnectionpoo是一个在使用mmdetect库可能出现的错误。通过一些方法如增加超间、检查网络连接、更新相关库或考虑使用其他库等,可以尝试解决这个问题。 ### 回答2: mmdetect pip._vendor.urllib3.exceptions.readtimeouterror: httpsconnectionpool 通常出现在使用 mmdet 检测框架。mmdet 是一个开源的目标检测框架,它基于 PyTorch 平台开发,提供了丰富的预训练模型和训练、测试工具等。 这个错误表示在进行网络请求发生了读取超。在 mmdetect 的代码中,它使用的是 urllib3 库进行网络通信,其中的 httpsconnectionpool 模块负责管理与服务器的连接池。 当出现 readtimeouterror 错误,可能有几种原因导致。一种可能是网络连接不稳定,导致请求的响应间超过了预设的超间。另一种可能是服务器负载过高,无法及响应请求。此外,也有可能是被请求的链接不可用或被服务器屏蔽。 为了解决这个问题,可以尝试以下几种方法。第一,可以增加超间,在 mmdet 的相关代码中将读取超间设置得更长一些,以适应网络不稳定的情况。第二,可以检查网络连接是否正常,例如尝试访问其他网站或检查网络设置。若网络连接存在问题,可以尝试重启网络设备或联系网络服务提供商解决。第三,可以排查服务器的负载情况,可以尝试在非高峰段进行请求,或者联系服务器管理员进行排查。最后,若确定被请求的链接存在问题,可以尝试使用其他可用链接或等待链接恢复正常。 总之,mmdect 的 readtimeouterror 错误表明在网络请求过程中发生了读取超,可以通过增加超间、检查网络连接、排查服务器负载等方式来解决此问题。 ### 回答3: mmdetect是一个用于检测恶意软件的开源工具,它提供了多种功能用于分析和检测潜在的恶意行为。而pip._vendor.urllib3.exceptions.readtimeouterror是一个异常错误,它表示在进行网络请求连接超。 具体来说,httpsconnectionpoo是一个连接池,它被用于管理HTTPS连接。在使用httpsconnectionpoo进行网络请求,可能会出现连接超的情况。这通常是因为网络连接较慢或目标服务器响应间过长导致的。 当出现readtimeouterror异常,mmdetect可能会记录这个异常,并在后续的分析中对这个异常进行处理。例如,它可以将这个异常作为一个恶意行为的指标之一,从而帮助用户识别和阻止类似的网络请求。 要解决这个问题,可以尝试增加连接超间,或者优化网络连接和目标服务器的响应速度。同,mmdetect也可以提供一些帮助,例如通过调整它的配置文件来更好地处理这些异常。 总之,mmdetect是一个用于检测恶意软件的工具,而pip._vendor.urllib3.exceptions.readtimeouterror是一个连接超的异常错误,mmdetect可以通过记录和处理这个异常来帮助用户分析和检测潜在的恶意行为。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值