WSL2 Ubuntu环境下pip命令因NewConnectionError重试失败求助
解决WSL2中pip域名解析失败的问题
1. 排查基础网络连通性
- 测试网络链路:执行
ping 8.8.8.8,若能收到响应,说明WSL网络链路正常,问题出在DNS解析;若不通,需检查WSL与Windows的网络桥接状态。 - 测试域名解析:执行
ping pypi.org,若提示Name or service not known,确认是DNS解析故障。
2. 修复WSL2的DNS配置
WSL2默认从Windows同步DNS,易出现异常,手动指定公共DNS:
- 备份原有DNS配置:
sudo cp /etc/resolv.conf /etc/resolv.conf.bak - 写入公共DNS服务器:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf - 防止WSL自动覆盖配置:创建
/etc/wsl.conf文件并写入规则:sudo tee /etc/wsl.conf << EOF [network] generateResolvConf = false EOF
3. 重置WSL2网络栈
在Windows管理员权限的PowerShell中执行:
wsl --shutdown
等待几秒后重新打开WSL,再测试pip命令。
4. 切换pip镜像源(可选)
若DNS问题仍存在,临时用国内镜像源绕过解析问题:
python3 -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
永久配置镜像源,创建~/.pip/pip.conf文件:
mkdir -p ~/.pip tee ~/.pip/pip.conf << EOF [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple EOF
5. 清理代理环境变量残留
即使关闭Windows代理,WSL可能残留代理变量:
- 检查变量:
echo $http_proxy echo $https_proxy - 若有输出,清空变量:
unset http_proxy https_proxy
内容的提问来源于stack exchange,提问作者Bella Ando
相关产品推荐
相关产品推荐

