1. 问题
在打开科学上网(xx)后,pip 安装 python 库失败(此时xx设置的直连)pip报错了,报错信息如下
Looking in indexes: http://pypi.tuna.tsinghua.edu.cn/simple
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001F1239A2A70>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))': /simple/langchain/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001F1239A2B90>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))': /simple/langchain/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001F1239A2C50>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))': /simple/langchain/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001F1239A2D10>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))': /simple/langchain/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip.
2. 尝试
看到报错信息和代理有关,因此退出xx,没问题,pip不会经常用,但是就是想找到 一个让 xx始终运行的方法,经过上网检索,找到了以下方法
2.1 设置环境变量
设置环境变量如下
HTTP_PROXY http://127.0.0.1:7890
HTTPS_PROXY http://127.0.0.1:7890
确实有效,但是很多博主并未给出原因,因为环境变量影响比较广,所以暂不考虑此方法。
2.2 修改注册表(非常不建议使用)
因为开启此功能后,xx发挥不了作用,这样还不如将xx退出
2.3 pip的代理设置
为pip 做相应的代理 设置
-
使用 pip 的
--proxy
选项设置代理:pip install libname --proxy http://127.0.0.1:7890
-
直接编辑pip的配置文件
pip.ini
在其中 [global]下面添加
proxy=http://127.0.0.1:7890
3. 问题的根源
-
代理服务器只支持
http
,且pip安装库使用的 urllib3 在以前是不支持 https 的,这样一来,尽管我们的源可能是 https的,但走的还是 http -
后来 新版本的 urlib3 支持 https 了,但代理服务器不支持, pip 通过 https 去找,但是代码服务器只支持 http, 没法处理请求
3.1 解决方法
个人推荐方法
既然 xx不支持 https,我们可以设置成 http的
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
值得一提的是,不使用安全HTTP协议时,我们要告诉pip我们信任该源(trusted-host
)
这种方法操作简单,且完全不会影响到pip之外