前言
conda install
和pip install
一般被认为是几乎相同的,但这两个工具虽然功能存在部分重叠,但其设计的目的是不同的。
一.使用区别
支持语言:
pip
是python
官方推荐的包下载工具,但是只能安装python包conda
是一个跨平台(支持linux, mac, win
)的通用包和环境管理器,它除了支持python
外,还能安装各种其他语言的包,例如 C/C++, R语言等
Repo源:
pip
从PyPI
(Python Package Index
)上拉取数据。上面的数据更新更及时,涵盖的内容也更加全面conda
从Anaconda.org
上拉取数据。虽然Anaconda
上有一些主流Python
包,但在数量级上明显少于PyPI
,缺少一些小众的包
包的内容
pip
里的软件包为wheel版或源代码发行版。wheel
属于已编译发新版的一种,下载好后可以直接使用;而源代码发行版必须要经过编译生成可执行程序后才能使用,编译的过程是在用户的机子上进行的,需要注意的是源码格式的包通常需要系统内安装了兼容的编译工具和所需要的库文件。- conda 里的软件包都是二进制文件,下载后即可使用,不需要经过编译
环境隔离
pip
没有内置支持环境隔离,只能借助其他工具例如virtualenv
orvenv
实现环境隔离conda
有能力直接创建隔离的环境
依赖关系
pip
安装包时,尽管也对当前包的依赖做检查,但是并不保证当前环境的所有包的所有依赖关系都同时满足。当某个环境所安装的包越来越多,产生冲突的可能性就越来越大。pip install
通过循环递归的方式安装依赖,这一点我们可以理解为只要碰到没有安装的依赖包就进行安装,直到安装完毕,很粗暴简单,但是随之带来的问题就是安装过程不稳定,比如安装过程中先安装的软件包的依赖和后安装的软件包的依赖产生冲突,整个安装过程就会崩坏。conda
会检查当前环境下所有包之间的依赖关系,保证当前环境里的所有包的所有依赖都会被满足
库的储存位置
- 在
conda
虚拟环境下使用pip install
安装的库: 如果使用系统的的python,则库会被保存在~/.local/lib/python3.x/site-packages
文件夹中;如果使用的是conda内置的python,则会被保存到anaconda3/envs/current_env/lib/site-packages
中。 conda install
安装的库都会放在anaconda3/pkgs
目录下。这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs
目录下将该库复制至新环境而不用重复下载
三 使用总结
推荐使用conda创建虚拟环境,能用conda安装的就先用conda(conda下载是真的慢,就算换源了还是慢,下大点的文件还容易失败),不行再使用pip安装。