2012年发布的跨平台包管理软件conda,是在数据分析界和Numpy和Scipy一样受欢迎的python工具。但是普通程序员平时只是会使用conda安装一些第三方包, 对它从哪里来,它是什么,和它要到哪里去所知甚少。今天我们就要讲一下关于conda和anaconda不可不知的误解和事实——conda必知必会的那些事实。

误解 #1:Conda是python的一个发行版,不是一个包管理器。

事实: Conda是一个包管理器;Anaconda才是一个python发行版。虽然conda是用Anaconda打包的, 但是它们两个的目标是完全不同的。

软件发行版是在系统上提前编译和配置好的软件包集合, 装好了后就可以直接用。包管理器是自动化软件安装,更新,卸载的一种工具。Conda,有命令”conda install”, “conda update”, “conda remove”, 所以很明显, conda是包管理器。

再来说说, Anaconda 和 Miniconda. Anaconda发行版会预装很多pydata生态圈里的软件,而Miniconda是最小的conda安装环境, 一个干净的conda环境。

但是,conda和Anaconda没有必然关系, 你可以不安装Anaconda的同时, 使用conda安装和管理软件。

误解 #2: Conda是一个python包管理器

事实:Conda是一个通用的包管理器,当初设计来管理任何语言的包。所以用来管理python包当然也是绰绰有余。

$ conda search –canonical | grep -v ‘py\d\d’

这句命令可以帮你找出不是 pip和virtualenv可以管理的python包,而conda可以管理

误解 #3: Conda 和 pip 是直接竞争关系

事实:Conda 和 pip 目标并不相同, 只有小部分子集有交集有竞争关系:比如python包的安装和环境隔离。 

一句话就可以看出区别:

pip可以允许你在任何环境中安装python包,而conda允许你在conda环境中安装任何语言包(包括c语言或者python)。

如果我们只是关注python包安装,conda和pip也是为不同用户和不同目标定制的。如果你想在一个已有系统快速管理python包,那你应该选择pip,因为conda应该在conda环境中使用,而pip鼓励在任何环境中使用 。而如果,你想要让许多依赖库一起很好地工作(比如数据分析中的Numpy,scipy,Matplotlib等等)那你就应该使用conda,conda很好地整合了包之间的互相依赖。

误解 #4: 使用conda首先是不负责任并且会引起分歧的

事实:Conda作者多年来用python标准创造conda,只有在非常清晰合理的时候, 才使用其他工具。

你可能会问,我相信conda是遵循python标准的,但是它们为什么偏偏要撇开pip自己去造一套包管理器呢?为什么他们不直接去pip团队贡献想法呢?

事实上,一开始conda那伙人是想在pip社区贡献想法和代码的,但是像numpy,scipy这样对底层c库有复杂依赖的包管理需求,真的不多,所以社区不接受这样的不常有的需求。所以,他们只能自己去造conda包管理器了。

误解 #5: conda不能和virtualenv一起使用,所以它对我的工作没用

事实上:你可以在virtualenv环境下安装conda,但是最好用conda自己的环境工具,这样会和pip有更好的兼容性

你可以在virtualenv里面安装conda:

$ virtualenv test_conda$ source test_conda/bin/activate$ pip install conda$ conda install numpy
  1. $ virtualenv test_conda
  2. $ source test_conda/bin/activate
  3. $ pip install conda
  4. $ conda install numpy
$ virtualenv test_conda$ source test_conda/bin/activate$ pip install conda$ conda install numpy

也可以在conda中造虚拟环境:

$ conda create -n yourenvname python=x.x anaconda
$ source activate yourenvname
  1. $ conda create -n yourenvname python=x.x anaconda
  2. $ source activate yourenvname
$ conda create -n yourenvname python=x.x anaconda
$ source activate yourenvname

误解 #6: 现在pip用wheels了,conda没什么用了

事实:wheels只是解决了conda试图克服的许多困难中的一个, conda二进制编排还是有很多wheels没有的优势 

wheels和conda都解决了预编译的代码安装问题(不仅仅是源代码安装)。但是wheel没有conda的依赖处理能力,wheels只能跟踪python代码的依赖关系,conda可以跟踪很多c代码的依赖关系,这为许多用numpy和scipy做科学计算优化的科学家省了不少心。

误解 #7: conda不是开源的;它是被盈利公司掌控的,如果有一天公司想收费了,那你就得付钱

Reality: conda (the package manager and build system) is 100% open-source, and Anaconda (the distribution) is nearly there as well.

Anaconda和conda都是standard BSD license开源标准。如果你还不放心,用pip install conda吧,这是完全开源的。

误解 #8: Conda 软件包本身都是闭源的吧?

事实: 虽然conda默认渠道没有完全开源,但是有一个社区牵头的conda-forge,它会推动conda的包和发行版完全开源。

误解 #9: 但是,如果Continuum Analytics公司倒闭,conda就不会存活了吧 ?

事实: conda没有和Continuum Analytics公司有很多牵扯;公司为社区免费提供支持服务,所有软件都有负责人,而不是公司全权负责。

误解 #10: 每个人都应该抛弃(conda | pip)去用(pip | conda) !

事实: pip 和 conda 是为不同目的存在的,我们应该更加关注怎么同时用好这两个工具,而不是只用一个

参考文献:

https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/

关于conda和anaconda不可不知的误解和事实——conda必知必会相关推荐

  1. conda与Anaconda

    1.简介与下载 Anaconda 本质上是一个软件发行版,包含了 conda.Python 等 180 多个科学包及其依赖项. 简单来说,就是安装了Annaconda,就安装了python.conda ...

  2. 关于anaconda顺利安装之后,cmd提示conda不是内部命令的问题

    关于anaconda顺利安装之后,cmd提示conda不是内部命令的问题 这个问题我们应该从路径入手,看看路径的情况 我们在cmd下使用命令 path 这里我们可以看到这是正常的情景,有anacond ...

  3. anaconda更新python版本mac_macos - 如何使用conda升级到Python 3.6?

    macos - 如何使用conda升级到Python 3.6? 我是Conda软件包管理的新手,我希望获得最新版本的Python,以便在我的代码中使用f-strings. 目前我的版本是(python ...

  4. 【bug解决方案】powershell 中无法激活 conda 环境 /Anaconda 使用 powershell 无效

    工作需求原因,拿到一台新电脑,首先需要安装 python .一般地,我用 conda 管理自己的 python 环境. 使用 conda 管理环境,大多需要用到命令行.使用 Anaconda 自带的 ...

  5. Windows下安装anaconda、创建虚拟环境、常见的conda命令

    一.python3.8安装anaconda 参考文章:python3.8安装anaconda_一拳一个嘤嘤嘤怪的博客-CSDN博客_anaconda python3.8 1.下载anaconda 清华 ...

  6. conda,anaconda,miniconda的区别

    可能从conda.miniconda和anaconda三个名词来说用得最多比较熟悉的应该是anaconda吧,包办一切,帮我们安装好了很多包和环境,我们都喜欢用现成的东西,懒得自己捣鼓.最近刚好有项目 ...

  7. conda、anaconda、miniconda区别和miniconda安装

    conda与anaconda.miniconda的区别 Conda是一个包管理器;Anaconda是一个发行包 conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理.包管理与 ...

  8. anaconda :An unexpected error has occurred. Conda has prepared the above report

    文章目录 anaconda创建新的虚拟环境时出现以下错误 解决办法 碎碎念 anaconda创建新的虚拟环境时出现以下错误 student1@guest-server:~$ conda create ...

  9. Anaconda创建、删除虚拟环境以及一些conda常用指令

    一.Anaconda创建.删除和复制环境 1. 创建虚拟环境 conda create -n your_env_name python=x.x # 在创建环境的同时安装必要的包 conda creat ...

最新文章

  1. 代码重构之三种取代类型码(类、子类、状态对象或策略对象)的方式辨析
  2. poj2976Dropping tests (二分搜索+还是涉及昨天遇见的o1分数规划)
  3. 【网络协议】专题总结以及网络协议高频面试题汇总(8篇)
  4. Kettle使用_23 Excel表格输入ODS POI
  5. json传输二进制的方案【转】
  6. 经典面试题(46):以下代码将输出的结果是什么?
  7. Linux学习笔记-管道的读写特性
  8. 最小权顶点覆盖问题分析
  9. usermod命令,用户密码管理,makpasswd
  10. centos7的firewall-cmd怎么让指定ip能访问指定端口?
  11. 2022全新趣盒iapp源码带后台非常好看UI
  12. creo怎么返回上一步_creo拔模怎么用?creo拔模操作技巧图文详解
  13. android google market 不能搜索到facebook或显示不兼容
  14. Koo叔说Shader—Shader简介
  15. 山西流传于百姓餐桌的宫府名菜——山西过油肉
  16. UnicodeDecodeError ‘gbk‘ codec can‘t decode byte 0x93 in position 6325 illegal multibyte sequence
  17. 让女朋友说Yes I Do的方法,数据分析助力客户管理的秘籍
  18. 技术总监岗位职责,网站技术总监的职能
  19. 全国大学生大数据技能竞赛(Hadoop集群搭建)
  20. 4年外包终上岸,我只能说这类公司能不去就不去

热门文章

  1. zblog如何调用HTML,Zblog调用栏目文章的方法
  2. mysql 查数据 default无效_导入mysql数据的时候提示Field * doesn't have a default value解决方法...
  3. centos7标准版命令界面和图形界面相互切换
  4. 使用shell进行mvn打包,根据mvn是否打包成功来进行下一步操作
  5. Kubernetes 1.6新特性
  6. java 中的2个接口 Comparable和Comparator
  7. 安卓学习-界面-布局-FrameLayout
  8. Linux下防止文件误删方法
  9. 桌面图标有阴影怎么去掉
  10. 不出现用户帐户控制-让Win7的用户账户控制(UAC)放过信任的程序