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

【linux在miniconda子环境下pip降版本】,第1张

【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
两种方法均因为新pip不被识别而失败

分析:
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

失败,我卸我自己
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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5690056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存