sslerror(maxretryerror(‘httpsconnectionpool(host=‘repo.anaconda.com’, port=443): max retries exceeded with url: /pkgs/main/noarch/repodata.json.bz2 (caused by sslerror(sslerror(“bad handshake: error([(‘ssl routines’, ‘ssl3_get_server_certificate’, ‘certificate verify failed’)])”)))’))在anaconda创建虚拟环境时出现
遇到这个错误通常意味着在尝试从anaconda的仓库(如repo.anaconda.com
)下载数据时,ssl握手失败,可能是由于证书验证问题。以下是一些解决此问题的步骤:
-
检查系统时间:确保你的计算机系统时间是准确的,因为时间偏差可能导致ssl证书验证失败。修正系统时间后,再尝试连接。
-
更新ca证书:有时,系统中的证书颁发机构(ca)根证书可能已过时。你可以尝试更新它们。在linux系统中,可以使用命令
sudo update-ca-certificates
来更新证书。 -
使用anaconda的国内镜像源:如果你在中国或其他地区,网络问题或防火墙设置可能导致与anaconda官方仓库的连接问题。考虑更换为国内镜像源,比如阿里云、清华大学等提供的anaconda镜像服务,这样可以避免一些网络阻断和证书问题。
-
临时禁用ssl验证:注意,这不是推荐的长期解决方案,因为它会降低安全性,但可以帮助诊断问题。在执行conda命令时添加
--no-verify-ssl
选项,例如:conda config --set ssl_verify false
在完成你的操作后,记得重新开启ssl验证以保障安全:
conda config --set ssl_verify true
-
手动指定信任的ca证书:如果你知道一个可信的ca证书,你可以将其路径指定给anaconda使用。编辑
.condarc
文件,加入以下内容:ssl_verify: /path/to/your/certificate.pem
确保替换
/path/to/your/certificate.pem
为你的证书文件的实际路径。 -
检查网络配置和代理设置:有时公司或学校的网络会使用代理服务器,这可能干扰ssl连接。确认你的http(s)_proxy环境变量是否正确设置,并且没有阻止对anaconda仓库的访问。
-
联系it支持:如果上述方法都无法解决问题,可能是网络环境本身的问题,如公司或学校的防火墙阻止了连接。这时应联系你的网络管理员或it支持团队,告知他们你遇到的具体错误,以便他们能够调整网络设置或防火墙规则。
请依次尝试上述方法,同时始终注意操作的安全性,特别是在涉及到禁用ssl验证时。
最终使用方法4解决了问题
发表评论