pip使用可信源仍遇SSL证书错误:requests_ntlm安装失败
解决pip安装requests_ntlm时的SSL错误问题
我之前也碰到过这种在代理环境下pip安装包时的SSL踩坑情况,给你几个实际试过有效的排查和解决方向:
先检查代理的格式合法性
要是你的密码里包含@、:这类特殊字符,直接写在代理URL里会破坏格式,导致解析失败。这种情况得把特殊字符做URL编码转义,比如@换成%40,:换成%3A。调整后的命令大概是这样:pip install --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org --proxy http://username:encoded_password@site.address:port requests_ntlm补全所有需要信任的PyPI相关主机
你之前换过索引URL,但可能漏掉了包实际下载的源主机files.pythonhosted.org。试试把所有关联的PyPI域名都加入可信列表,同时指定纯HTTP索引:pip install --index-url http://pypi.python.org/simple/ --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org --proxy http://username:password@site.address:port requests_ntlm很多包的安装包文件存在这个files域名下,没加信任的话照样会触发SSL验证错误。
排查本地SSL证书问题
要是系统缺少必要的根CA证书,也会导致SSL握手失败。可以尝试指定系统的证书路径,或者临时关闭证书验证(注意:后者有安全风险,仅限测试环境用):# 指定证书路径 pip install --proxy http://username:password@site.address:port --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org --cert /path/to/your/cacert.pem requests_ntlm # 临时关闭证书验证(不推荐生产环境) pip install --proxy http://username:password@site.address:port --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org --no-check-certificate requests_ntlm用pip配置文件持久化设置
每次命令行堆一堆参数太麻烦,不如直接配置pip的全局设置文件:- Linux/macOS:在用户目录下创建
~/.pip/pip.conf - Windows:在
%APPDATA%\pip\目录下创建pip.ini
写入以下内容:
[global] proxy = http://username:password@site.address:port index-url = http://pypi.python.org/simple/ trusted-host = pypi.python.org pypi.org files.pythonhosted.org之后直接跑
pip install requests_ntlm就能自动读取这些配置,不用再手动加参数了。- Linux/macOS:在用户目录下创建
另外,你提到加-v只看到部分输出,建议把完整的verbose日志贴出来,比如有没有明确提示“certificate verify failed”或者“cannot connect to proxy”,这样能更快定位到底是代理连接问题还是证书验证问题。
内容的提问来源于stack exchange,提问作者penfold1992




