当你看到"Conda报错WinError 10061"时,本质上是在说:你的电脑想和某个服务器握手,但对方直接拒绝了这次握手。就像你敲门拜访朋友,但对方不仅不开门,还明确告诉你"别来烦我"。这个错误代码在Windows系统中有明确定义——目标计算机明确拒绝了连接请求。
我处理过数十例类似案例,发现主要发生在三种场景:
典型报错信息长这样:
bash复制Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None))
after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002047CC85B50>:
Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')'
关键要明白:这不是网络不通的问题(否则会报超时错误),而是对方服务器明确拒绝响应。接下来我会带你一步步找出"被拒绝"的真实原因。
很多人不知道conda其实有两层代理配置:
先用这个命令查看当前配置:
bash复制conda config --show
重点检查这些字段:
我曾遇到一个典型案例:用户同时在环境变量和.condarc配置了不同代理,导致冲突。建议先用以下命令清除conda的代理设置:
bash复制conda config --remove-key proxy_servers
conda config --remove-key http_proxy
conda config --remove-key https_proxy
国内用户常犯的一个错误是同时配置镜像源和代理。比如这样配置了清华源:
yaml复制channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- defaults
proxy_servers:
http: http://proxy.example.com:8080
https: https://proxy.example.com:8080
这就像让司机"先左转"又立即"右转",系统直接懵了。正确的做法是:
清除所有channel配置的命令:
bash复制conda config --remove-key channels
先排除最基础的网络问题:
bash复制# 测试直接访问conda官方源
ping repo.anaconda.com
# 测试访问镜像源(以清华为例)
ping mirrors.tuna.tsinghua.edu.cn
如果ping不通,说明是网络环境问题。但注意:WinError 10061通常是能ping通但被拒绝连接,这时候需要更精细的诊断。
安装curl工具后(可通过choco或scoop安装),执行:
bash复制curl -v https://repo.anaconda.com/pkgs/main/win-64/repodata.json
观察输出中的关键信息:
当问题复杂时,我推荐这个"三步重置法":
bash复制conda config --remove-key channels
conda config --remove-key proxy_servers
conda config --set ssl_verify true
bash复制rm ~/.condarc
bash复制conda config --prepend channels defaults
在企业环境中,还可能遇到:
错误提示通常包含"SSL verification failed"。解决方法:
bash复制conda config --set ssl_verify False
但要注意:这会降低安全性,仅建议在内网环境使用。
如果需要代理认证,正确的配置格式是:
yaml复制proxy_servers:
http: http://username:password@proxy.example.com:8080
https: https://username:password@proxy.example.com:8080
当所有常规方法都失效时,需要用Wireshark抓包分析:
典型问题模式:
这种深度排查法帮我解决过多个疑难杂症,特别是当企业网络有特殊安全策略时。