同一个虚拟环境下的conda list和pip list里的包不一样,这是为什么,它们有什么区别

区别:

Conda 除了虚拟环境下的还有关联文件下的

Pip只有当前虚拟环境下的


当关联环境下有这个包,再用conda在其他虚拟环境下下载该包
就会直接关联
不用下载

比如说base环境下有包,在另一个环境下下载同样的包,就会关联上,不用真的下载,直接复制过去或者关联即可
验证得到:pip下的list是conda下list的子集



相关知识:https://blog.csdn.net/nyist_yangguang/article/details/109848366   Anaconda中pkgs文件夹详解

注:评论区的大大有新的见解,我放上来了:

conda有严格的检查机制,它会保证你当前装的package安装好之后能work,但是,它只检查用conda安装过的package。例如,你新安装的package会依赖numpy ,不过你已经安装numpy(e.g., 1.19.2),但是用pip安装的,不好意思,它会认为你没安装,然后用conda再安装一个依赖版本的numpy(e.g., 1.18.5)。这个时候,两个numpy可能就打架了。并且你pip list与conda list显示的numpy版本可能不一致,结果不知道最后运行程序的时候调用了哪个版本的numpy。这个时候,uninstall可能也卸载不干净,卸了一个还有一个,最后还可能一直list有却是一个空壳。这个时候,快刀斩乱麻的方法,找到anaconda的lib/site-packages/numpy, 手动删掉它!pip的一个好处是可以安装时既检查conda安装过package的也检查pip安装过的package。不过,它只负责要什么装什么,不负责能不能把装的一堆packages打通,可能装好不work :(。

### pip list conda list 显示差异的原因 在 Python 的管理中,`pip list` `conda list` 是两种常用的命令用于查看环境中已安装的软件列表。然而,这两个命令显示的内容可能存在差异。 #### 工具同导致的差异 `conda list` 使用 Conda 管理器来获取环境中的所有已安装的信息,而 `pip list` 则依赖于 Pip 管理器仅限于当前激活虚拟环境内的[^2]。由于两者基于同的机制工作,因此即使在同一环境下也可能看到同的结果集合。 #### 环境范围的影响 另一个显著区别在于作用域方面:`conda list` 仅仅局限于当前活动的虚拟环境,它还能够展示与之关联的其他环境中的;相比之下,`pip list` 只专注于报告当前被激活的那个特定虚拟环境内部存在的那些[^3]。 #### 版本控制上的分歧 对于同一款软件,在通过这两种方式查询时可能会遇到版本号匹配的情况。这是因为当同时利用PipConda来进行安装操作时,有可能会在无意间引入了重复但版本有所差别的相同名称库文件。通常情况下,默认加载顺序倾向于选择由Pip所管理的那一版次序更高的实例[^1]。 ### 解决方案建议 为了确保一致性并减少潜在冲突的风险: - **统一使用单一工具**:尽可能地坚持采用同一种管理系统(要么全部用 Conda 要么全用 Pip)进行所有的安装更新动作。 - **清理冗余条目**:如果确实需要混合使用,则应定期检查并移除必要的副本或者过期版本。例如,可以先卸载来自其中一个源的指定后再重新安装所需的具体版本。 ```bash # 卸载旧版本 conda remove package_name # 安装新版本 pip install --force-reinstall package_name==specific_version ``` - **明确路径配置**:确认系统的 PATH 或者 PYTHONPATH 设置会优先指向错误的位置从而影响到模块解析过程。
评论 63
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的探索之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值