PAYATHON 2026

Windows 上 Conda 更新报 ConnectionResetError 怎么排查?

数据阿明

结论

ConnectionResetError(10054) 表示获取 Conda 仓库元数据时,连接被远端或网络路径中的设备重置。随后出现的 CondaHTTPError: HTTP 000 CONNECTION FAILED 则表示请求未能成功完成。仅凭这段日志,无法判断重置发生在 Anaconda 仓库、路由器、运营商网络还是本机安全软件,因此反复重装 Anaconda 通常无法定位问题。排查时也不需要关闭 SSL 证书验证。

日志中的失败请求指向 https://repo.anaconda.com/pkgs/main/noarch/repodata.json,重试时还涉及 pkgs/r 和 pkgs/msys2 下的元数据。你提到没有使用代理,也试过调整 Windows Firewall 和 Trusted Sites,但问题仍未解决。接下来可以检查网络连接和 Conda 配置。

按顺序排查

1. 检查 Windows 到仓库的连接

在 PowerShell 中运行:

Test-NetConnection repo.anaconda.com -Port 443

查看 TcpTestSucceeded:

  • 如果是 False,先检查当前网络能否连接到 repo.anaconda.com:443。可以暂时换用手机热点等另一条可信网络进行对比。如果换网后恢复,问题更可能与原网络路径或网络策略有关。
  • 如果是 True,说明 TCP 端口可以建立连接,但这不能证明 HTTPS 请求和证书验证都正常。请继续检查 Conda 配置和 TLS 环节。

也可以在浏览器中打开日志里的仓库地址,观察 HTTPS 连接是否正常。浏览器能访问该地址,不代表 Conda 使用了相同的代理或证书设置,但可以作为对照。

2. 查看 Conda 实际加载的配置

运行:

conda info
conda config --show-sources
conda config --show ssl_verify proxy_servers channels

检查输出中是否有未预期的代理、证书路径或 channel 地址。即使你目前没有主动使用代理,配置文件中也可能留有旧设置。conda config --show-sources 可以帮助找到配置来源。发现异常时,先备份对应配置文件,再移除或修正有问题的项目,避免清空其他设置。

如果 ssl_verify 被设为 false 或指向不存在的证书文件,应恢复默认的验证行为。不要使用 conda config --set ssl_verify no 来绕过问题。关闭验证后,Conda 将无法可靠确认 HTTPS 对端的身份。

3. 检查系统时间和证书相关改动

确认 Windows 的日期、时间和时区正确。系统时间错误可能影响 HTTPS 证书校验。

问题描述还提到,重装后曾将 libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll 从 anaconda3\Library\bin 复制到 anaconda3/DLLs。现有日志无法证明这一步导致了连接重置,但手动复制 DLL 会改变安装目录中的文件状态。如果这些副本还在,建议通过 Anaconda 的正常安装流程恢复干净环境,并避免再次手动复制。之后在 Anaconda Prompt 中确认使用的是预期的 Conda:

where conda
conda info

4. 清理索引缓存后重试

确认配置和网络无误后,可以清理 Conda 的索引缓存,再单独更新 base 环境中的 Conda:

conda clean --index-cache
conda update -n base conda

原命令 conda update --all 会尝试更新当前环境中的所有包,不等同于只更新 base 环境中的 Conda。先更新 Conda 本身,再按需更新目标环境中的包。

如果问题仍未解决,请保留完整命令输出和失败时间,并比较不同网络下的结果。这些信息有助于判断问题出在本机、当前网络还是仓库访问路径上。

注意事项

关闭 Windows Firewall、将仓库加入 Internet 选项中的 Trusted Sites,或反复重装,都不能单独证明问题根因。家庭网络用户也可以检查路由器安全设置或网络服务提供方是否影响了该 HTTPS 连接。不要为了消除错误而关闭 SSL 验证。如果所用网络需要企业或组织提供 TLS 检查证书,请向管理员获取正确证书,并按 Conda 支持的方式配置。

备注:内容仅供参考。