当前位置: 首页 > news >正文

【python基础】—pip与conda的区别

文章目录

  • 一、 pip 与 conda
    • 1、支持语言
    • 2、Repo源
    • 3、包的内容
    • 4、环境隔离
    • 5、依赖关系
    • 6、总结
  • 二、pip install 与 conda install
    • 1、库的存储位置
    • 2、总结
  • 三、pip uninstall 与 conda uninstall


一、 pip 与 conda

1、支持语言

  • pip 是 官方推荐的 python 包管理器,但是只能安装 python 包。
  • conda 是一个跨平台(支持linux,mac,win)的通用包和环境管理器,它除了支持python外,还能安装各种其他语言的包,例如C/C++,R语言等。

2、Repo源

  • pip 从PyPI(Python Package Index https://pypi.org/)上拉取数据。上面的数据更新及时,涵盖的内容更加全面。
  • conda 从 Anaconda.org 上拉取数据。虽然Anaconda上有一些主流Python包,但在数量级上明显少于PyPI,缺少一些小众的包。

3、包的内容

  • pip 里的软件包为wheel版或者源码发行版,wheel属于已编译发新版本的一种,下载好后可以直接使用;而源代码发行版必须要经过编译生成可执行程序后才能使用,编译的过程是用户的机子上进行的,可能要求系统安装兼容的编译器和库。

  • conda 里软件包都是二进制文件,下载后即可以使用,不需要经过编译。

4、环境隔离

  • pip 没有内置支持环境隔离,只能借助其他工具,例如 virtualenv or venv 实现环境隔离。
  • conda 有能力直接创建隔离的环境。

5、依赖关系

  • pip 安装包时,尽管也对当前包的依赖做检查,但是并不保证当前环境的所有包的所有依赖关系都同时满足。当某个环境所安装的包越来越多,产生冲突的可能性越来越大。
  • conda 会检查当前环境下所有包之间的依赖关系,保证当前环境里所有包的所有依赖都会被满足。

6、总结

  • pip 可以在任何环境中安装包,但是只能安装Python包。
  • conda 只能在conda环境中安装包,但是可以安装各种语言、各种类型的包。

二、pip install 与 conda install

1、库的存储位置

  • 在conda虚拟环境下, 执行"pip install 安装的库"命令,如果使用系统的python,则库会被保存在 “~/.local/lib/python3.x/site-packages” 文件夹中;如果使用的是conda内置的python,则会被保存到 “anaconda3/envs/current_env/lib/site-packages” 中。(如果想要修改pip的默认安装路径?可以参考文章:https://blog.csdn.net/sodaloveer/article/details/140175054)

  • 执行 “conda install 安装的库” 命令,都会被放在 “anaconda3/pkgs” 目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录一将该库复制至新环境而不用重复下载。

2、总结

  • pip下的list是conda下list的子集。
    • 所以"conda list" 显示列表数据 大于 "pip list"显示列表数量,因为"conda list"除了可以查询当前虚拟环境和关联环境下的python包,还有非python包。“pip list” 只能查询当前虚拟环境下的python包。

三、pip uninstall 与 conda uninstall

  • 执行"pip uninstall 安装的库"命令,如果使用系统的python,则库会被在 "~/.local/lib/python3.x/site-packages"文件夹中卸载;如果使用的是conda内置的python,则会被在"anaconda3/envs/current_env/lib/site-packages"中卸载。

  • 执行 “conda uninstall 安装的库” 命令删除当前环境下某个库,删除的只是当前环境下 “site-packages” 目录中该库的内容,它的效果和通过执行 “pip uninstall 安装的库” 命令是一样的,如果再到另一个环境中通过 “conda install 安装的库” 命令下载这个库,则还是通过将 “anaconda3/pkgs” 目录下的库复制到当前环境,若要清空"anaconda3/pkgs" 目录下已经下载的库,可以通过执行 “conda clean -h” 命令实现。


参考文章:
https://blog.csdn.net/whc18858/article/details/127135973
https://blog.csdn.net/FrankieHello/article/details/106083428
https://blog.csdn.net/weixin_43913261/article/details/124775773

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • c++【入门】分享水果
  • Linux shell编程学习笔记62: top命令 linux下的任务管理器
  • [解决] chrome/edge浏览器打开F12开发者模式,点击应用标签崩溃
  • IPython代码块粘贴秘籍:效率与技巧的完美结合
  • Perl 语言开发(三):运算符和表达式
  • 【自动驾驶仿真在做什么——初学者总结(陆续补充)】
  • 部署LVS+keepalived做网站的高可用,高负载。
  • k8s学习--基于k8s的ELK日志收集的详细过程
  • TreeMap、HashMap 和 LinkedHashMap 的区别
  • 爬虫进阶:Selenium与Ajax的无缝集成
  • Java 基础知识之 依赖注入(Dependency Injection)
  • 北京十大拆迁律师事务所排名
  • Android zygote访谈录
  • Docker:Docker网络
  • 分支与循环
  • Google 是如何开发 Web 框架的
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 07.Android之多媒体问题
  • Angular6错误 Service: No provider for Renderer2
  • css布局,左右固定中间自适应实现
  • HomeBrew常规使用教程
  • Javascripit类型转换比较那点事儿,双等号(==)
  • javascript 总结(常用工具类的封装)
  • laravel with 查询列表限制条数
  • Linux下的乱码问题
  • MySQL-事务管理(基础)
  • Python连接Oracle
  • Spring-boot 启动时碰到的错误
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue学习第二天
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 分布式熔断降级平台aegis
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 新手搭建网站的主要流程
  • 大数据全解:定义、价值及挑战
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2)STL算法之元素计数
  • (26)4.7 字符函数和字符串函数
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (三)Honghu Cloud云架构一定时调度平台
  • (五)c52学习之旅-静态数码管
  • (转)JAVA中的堆栈
  • (转)我也是一只IT小小鸟
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core 2.1路线图
  • .net framework 4.8 开发windows系统服务
  • .NET 设计模式初探
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?