【linux在miniconda子环境下pip降版本踩坑】

linux在miniconda子环境下pip降版本

核心

操作背景:
miniconda生成一个py37的子环境
自带了一个pip==21.3.1

核心问题:
我需要降低pip版本到pip==19

操作过程:
python -m pip install pip==19.0.1

python -m pip uninstall pip
python -m ensurepip
两种方法均失败

分析:
conda install
pip install
两个方法都可以安装包,是指在随环境生成的原装pip上,如果pip修改版本不当,pip非原装,就会导致装的包不被conda调用,因此pip修改版本需要conda来操作

解决方法:
conda install pip==19.0.1

结果:
完成pip降版本

背景

在复现论文的过程中,需要搭建一个新环境,综合考虑之后python37比较合适,于是在miniconda下创建我需要的环境
conda create -n python37 python=3.7
在这里插入图片描述

而我需要pip==19
本次问题出现:linux在miniconda的py37环境下 pip降版本

描述一下我是怎么进入这个坑的

pip降级有两种办法

1.python -m pip install pip==19.0
在这里插入图片描述
失败,pip21.3这个一直retry的问题应该是SSL的根源,此路不通
2.卸载了再装
python -m pip uninstall pip
python -m ensurepip
在这里插入图片描述

在这里插入图片描述
貌似成功了,但是一旦查看
版本不对:pip --version
pip 10.0.1 from miniconda3/envs/py36/lib/python3.6/site-packages/pip (python 3.6)
这是我的另一个环境的pip
试一下能不能用:pip list
No such file or directory

你看它不识别呀,所以还是不对,用conda list查看一下
在这里插入图片描述
这个新安装的pip似乎和别人不一样:
它是不被conda调用的

想了一下有了一点feel:
以上不论是哪种方法给pip降级,后来的pip都不是最开始随环境生成时conda安装的pip了,我称之为pip.pip,而原生的是conda.pip

这里就到了我这次最想说的一点:
随环境生成的pip是conda装的pip,用它的本质还是conda操控的安装,因此安装的包可以被识别,

但是重新安装的pip,它和conda没有关系,因此它安装的包conda不认可
其实pip和conda的安装都可以在conda list里面看出来有所不同:
在这里插入图片描述

pip装的在后面的来源都清晰标明了,而其他的随环境生成是安装的是来自conda的镜像源

总结:
conda的子环境下,安装方式有两种
conda install
pip install
两个方法都可以安装包,是指在随环境生成的原装pip上,如果pip修改版本不当,pip非原装,就会导致装的包不被conda调用,因此pip修改版本需要conda来操作

解决问题

那既然pip不能直接装自己,就还是用conda安装:

conda install pip==19.0

第一次出错了:
在这里插入图片描述

所以我需要确定一下哪些是可以的

conda search pip
在这里插入图片描述

就列出来了所有可以用的包,然后对应安装

找一个对应的pip==19.0.1
在这里插入图片描述
此时,pip被conda安装成功

结果

pip降版本成功

分析

conda的子环境下,安装方式有两种
conda install
pip install
两个方法都可以安装包,是指在随环境生成的原装pip上,如果pip修改版本不当,pip非原装,就会导致装的包不被conda调用,因此pip修改版本需要conda来操作
比较两个pip

比较1:安装
(conda.pip安装)

find -name urllib3
./miniconda3/envs/hhhh/lib/python3.7/site-packages/urllib3

(卸掉conda.pip安装pip.pip,然后再pip.pip)
./miniconda3/envs/hhhh/lib/python3.7/site-packages/pip/_vendor/urllib3
./miniconda3/envs/hhhh/lib/python3.7/site-packages/urllib3

比较2:卸载

pip.pip安装一个包
卸掉pip.pip安装conda.pip
conda.pip安装一个包

在这里插入图片描述
find -name requests
./miniconda3/envs/py37/lib/python3.7/site-packages/pip/_vendor/requests
./miniconda3/envs/py37/lib/python3.7/site-packages/requests

通过卸载测试一下哪个是哪个:
(此时的pip已经是conda版本的了)
pip uninstall requests=conda uninstall requests在这里插入图片描述

卸载掉了conda.pip的,还剩一个就是之前pip.pip安装的:
在这里插入图片描述

可以看到,conda.pip与pip.pip安装的路径也是不一样的

pip.pip:
./miniconda3/envs/xxxx/lib/python3.7/site-packages/pip/_vendor/xxx

conda.pip:
./miniconda3/envs/xxxx/lib/python3.7/site-packages/xxx

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值