问题:在打开科学上网软件的前提下,pip安装python库失败

一、报错展示

image.png

错误描述:在使用科学上网之后,conda installpip install均不能使用

二、解决方案

2.1 关闭电脑上的代理服务

这中方法最直观有效,但是很烦,每次搜索安装模块都需要关闭代理

2.2 设置http类型的源

conda: 编辑 .condarc 文件,文件目录:C:\Users\你的用户名\

channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
ssl_verify: true
show_channel_urls: true

pip:编辑 pip.ini 文件,文件目录:C:\Users\你的用户名\pip\ ps:如果没有pip目录,手动创建pip目录,在目录下添加pip.ini文件

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host = mirrors.aliyun.com

问题根源

3.1 问题的根源

  • 代理服务器只支持HTTP(不确定是XX的锅还是windows的锅),且pip安装库时使用的urllib3在以前也就是低版本的时候是不支持HTTPS的,这样一来,尽管我们的源可能是HTTPS的,比如阿里源https://mirrors.aliyun.com/pypi/simple/,但走的还是HTTP,这正称了代理服务器的心,因此工作起来没有问题。
  • 后来也就是新版本的urllib3支持HTTPS了,但代理服务器不支持,这时候就出问题了:pip通过HTTPS去找代理,但由于代理服务器只支持HTTP,没法处理请求,因此在ssl握手阶段就出错了(连接不上代理)。
  • 关于2.3节的做法为什么没有效,是因为通过--proxy或配置文件所作的代理设置没有被更正到urllib的request。

原文链接:https://blog.csdn.net/gzxb1995/article/details/119084974