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

原文:https://blog.csdn.net/qsir/article/details/79354734

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.  
  3. $ source test_conda/bin/activate
  4.  
  5. $ pip install conda
  6.  
  7. $ 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/

 

其他参考资料:

1、conda 管理多版本python

https://blog.csdn.net/wild46cat/article/details/81638858

2、conda的安装与使用(最新版)

https://www.jianshu.com/p/edaa744ea47d

 

本人安装的miniconda自带python3.7.1,添加python2.7的命令如下图所示。

(base) E:\>python -V
Python 3.7.1

(base) E:\>conda create -n py27 python=2.7
Solving environment: done

## Package Plan ##

  environment location: E:\miniconda3\envs\py27

  added / updated specs:
    - python=2.7


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    vs2008_runtime-9.0.30729.6161|                0         1.0 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    pip-18.1                   |        py27_1000         1.8 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    wheel-0.32.3               |           py27_0          51 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    vc-9                       |                0          824 B  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    setuptools-40.6.3          |           py27_0         610 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    wincertstore-0.2           |        py27_1002          13 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    python-2.7.15              |    h2880e7c_1006        21.0 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    certifi-2018.11.29         |        py27_1000         145 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    ------------------------------------------------------------
                                           Total:        24.6 MB

The following NEW packages will be INSTALLED:

    certifi:        2018.11.29-py27_1000 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    pip:            18.1-py27_1000       https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    python:         2.7.15-h2880e7c_1006 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    setuptools:     40.6.3-py27_0        https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    vc:             9-0                  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    vs2008_runtime: 9.0.30729.6161-0     https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    wheel:          0.32.3-py27_0        https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    wincertstore:   0.2-py27_1002        https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge

Proceed ([y]/n)? y


Downloading and Extracting Packages
vs2008_runtime-9.0.3 | 1.0 MB    | ########################################################################################################## | 100%
pip-18.1             | 1.8 MB    | ########################################################################################################## | 100%
wheel-0.32.3         | 51 KB     | ########################################################################################################## | 100%
vc-9                 | 824 B     | ########################################################################################################## | 100%
setuptools-40.6.3    | 610 KB    | ########################################################################################################## | 100%
wincertstore-0.2     | 13 KB     | ########################################################################################################## | 100%
python-2.7.15        | 21.0 MB   | ########################################################################################################## | 100%
certifi-2018.11.29   | 145 KB    | ########################################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate py27
#
# To deactivate an active environment, use
#
#     $ conda deactivate


(base) E:\>python -V
Python 3.7.1

(base) E:\>conda activate py27

(py27) E:\>python -V
Python 2.7.15

(py27) E:\>conda deactivate

(base) E:\>python -V
Python 3.7.1

(base) E:\>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值