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

本文详细记录了在Linux的Miniconda子环境下如何将pip从21.3.1版本降至19.0.1的过程。通过尝试使用`python -m pip install`和`python -m pip uninstall`命令,发现这些方法并未成功。问题在于,直接使用pip修改版本会创建一个不受conda管理的新pip,导致安装的包无法被conda识别。最终解决方案是利用conda自身来降级pip,即运行`conda install pip==19.0.1`。通过对比不同安装方式下的pip,作者揭示了conda安装的pip与pip安装的pip在路径和行为上的差异,并强调在conda环境中修改pip版本应使用conda命令以确保一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值