You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Python下载MNIST数据集时的URLError[WinError10060]问题

解决MNIST数据集下载超时(WinError 10060)的方法

以下是几种可行的解决办法,按操作复杂度排序:

1. 手动下载本地读取

直接跳过代码中的自动下载步骤,手动获取数据集文件:

  • 找到mnist.pkl.gz格式的MNIST数据集文件,将其下载到和你的Python脚本同一目录下
  • 重新运行代码,脚本会检测到本地已有文件,直接跳过下载逻辑,读取本地文件处理

2. 给下载逻辑添加重试与超时机制

修改原代码的下载部分,增加重试次数和超时限制,避免单次连接失败就报错:

import numpy as np
import pickle, gzip, urllib.request, os.path
from urllib.error import URLError

url = "http://deeplearning.net/data/mnist/mnist.pkl.gz"
filename = 'mnist.pkl.gz'

if not os.path.isfile(filename):
    retry_times = 3
    for attempt in range(retry_times):
        try:
            # 设置10秒超时,避免无限等待
            urllib.request.urlretrieve(url, filename, timeout=10)
            break
        except URLError:
            if attempt == retry_times - 1:
                # 最后一次重试失败,抛出原错误
                raise
            print(f"下载超时,正在重试第{attempt+2}次...")

# 后续读取与处理代码保持不变
with gzip.open(filename, 'rb') as f:
    train_set, valid_set, test_set = pickle.load(f, encoding='latin1')

train_X, train_y = train_set
valid_X, valid_y = valid_set
test_X, test_y = test_set

# 打印信息代码...

3. 更换为国内镜像源

将原代码中的下载地址替换为国内可快速访问的MNIST镜像地址,解决跨网络访问延迟问题:

  • 替换代码中的url变量为国内镜像的mnist.pkl.gz文件地址
  • 运行代码即可正常下载

4. 排查网络环境问题

  • 测试本地网络是否能访问目标服务器,可尝试更换网络(如手机热点)重试
  • 检查是否有防火墙、代理软件拦截了请求,临时关闭防火墙或配置urllib使用代理(若需):
    # 配置代理示例,替换为你的代理地址和端口
    proxy_handler = urllib.request.ProxyHandler({
        'http': 'http://your-proxy-address:port',
        'https': 'https://your-proxy-address:port'
    })
    opener = urllib.request.build_opener(proxy_handler)
    urllib.request.install_opener(opener)
    
    # 之后执行urlretrieve下载
    

内容的提问来源于stack exchange,提问作者user22058539

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:15:16