Pipenv无法锁定Pipfile问题求助(企业代理环境)
问题分析与解决方案
是否为SSL相关问题?
是的。从报错回溯来看,问题发生在SSL握手阶段(self._sslobj.do_handshake()),最终导致连接被远程主机强制关闭(WinError 10054)。虽然pip和virtualenv能正常工作,但Pipenv使用了自带的patched版本urllib3、requests等库,这些库可能未正确读取pip.ini代理配置中的SSL相关设置,或是企业代理的SSL证书未被Pipenv内置库信任。
解决步骤
1. 为Pipenv配置代理环境变量
在当前命令行会话中临时设置代理:
# Windows cmd set HTTP_PROXY=http://你的代理地址:端口 set HTTPS_PROXY=http://你的代理地址:端口 set NO_PROXY=localhost,127.0.0.1 # Windows PowerShell $env:HTTP_PROXY="http://你的代理地址:端口" $env:HTTPS_PROXY="http://你的代理地址:端口" $env:NO_PROXY="localhost,127.0.0.1"
设置完成后执行pipenv lock测试。
2. 让Pipenv信任企业代理证书
如果企业代理使用自签名SSL证书,需指定证书路径:
# Windows cmd set REQUESTS_CA_BUNDLE=C:\证书路径\proxy-cert.crt set SSL_CERT_FILE=C:\证书路径\proxy-cert.crt # Windows PowerShell $env:REQUESTS_CA_BUNDLE="C:\证书路径\proxy-cert.crt" $env:SSL_CERT_FILE="C:\证书路径\proxy-cert.crt"
也可将证书导入系统信任根证书库,让Pipenv间接信任该证书。
3. 替换PyPI镜像源
若代理连接官方PyPI不稳定,修改项目Pipfile中的源:
打开Pipfile,找到[[source]]部分替换为国内镜像:
[[source]] url = "https://pypi.tuna.tsinghua.edu.cn/simple" verify_ssl = true name = "pypi"
保存后执行pipenv lock --clear重新尝试锁定。
4. 升级Pipenv版本
旧版本Pipenv可能存在代理兼容问题,升级到最新版:
pip install --upgrade pipenv
5. 强制Pipenv使用系统库
若以上方法无效,让Pipenv使用系统已配置好的requests/urllib3库:
# Windows cmd set PIPENV_NO_INHERIT=0 set PIPENV_VENV_IN_PROJECT=1 # Windows PowerShell $env:PIPENV_NO_INHERIT=0 $env:PIPENV_VENV_IN_PROJECT=1
内容的提问来源于stack exchange,提问作者Ryan F
相关产品推荐
相关产品推荐

