VS Code中下载Torchvision的CIFAR10数据集时遇SSLCertVerificationError
CIFAR10数据集下载时SSLCertVerificationError错误解决
问题场景
运行以下PyTorch代码下载CIFAR10数据集时,触发了SSL证书验证错误:
from torchvision import datasets data_path= 'dataset_cifar/' cifar10=datasets.CIFAR10(data_path,train=True,download=True) cifar10_val=datasets.CIFAR10(data_path,train=False,download=True)
报错信息:
--------------------------------------------------------------------------- SSLCertVerificationError Traceback (most recent call last) C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\urllib\request.py in do_open(self, http_class, req, **http_conn_args) 1345 try: -> 1346 h.request(req.get_method(), req.selector, req.data, headers, 1347 encode_chunked=req.has_header('Transfer-encoding')) C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\http\client.py in request(self, method, url, body, headers, encode_chunked) 1284 """Send a complete request to the server.""" -> 1285 self._send_request(method, url, body, headers, encode_chunked) 1286 C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\http\client.py in _send_request(self, method, url, body, headers, encode_chunked) 1330 body = _encode(body, 'body') -> 1331 self.endheaders(body, encode_chunked=encode_chunked) 1332 C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\http\client.py in endheaders(self, message_body, encode_chunked) 1279 raise CannotSendHeader() -> 1280 self._send_output(message_body, encode_chunked=encode_chunked) 1281 C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\http\client.py in _send_output(self, message_body, encode_chunked) 1039 del self._buffer[:] -> 1040 self.send(msg) ... -> 1349 raise URLError(err) 1350 r = h.getresponse() 1351 except: URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)>
解决方法
方法1:临时禁用SSL证书验证
在代码开头添加SSL上下文设置,跳过证书验证:
import ssl ssl._create_default_https_context = ssl._create_unverified_context from torchvision import datasets data_path= 'dataset_cifar/' cifar10=datasets.CIFAR10(data_path,train=True,download=True) cifar10_val=datasets.CIFAR10(data_path,train=False,download=True)
注意:此方法会降低网络请求安全性,仅建议在测试环境使用。
方法2:手动下载数据集
- 获取CIFAR10官方数据集压缩包(包含训练集和测试集的Python格式压缩文件)
- 将压缩包解压到代码中指定的
dataset_cifar/目录下 - 修改代码中的
download参数为False,避免重复下载:
from torchvision import datasets data_path= 'dataset_cifar/' cifar10=datasets.CIFAR10(data_path,train=True,download=False) cifar10_val=datasets.CIFAR10(data_path,train=False,download=False)
方法3:检查网络环境
- 关闭当前使用的代理工具,尝试重新运行代码
- 切换到稳定的网络环境(如关闭VPN、使用本地网络),避免网络拦截导致证书验证失败
内容的提问来源于stack exchange,提问作者Hemanth Harikrishnan
相关产品推荐
相关产品推荐

