大部分情况下,二者安装都可以正常work,但是混装多种package后容易版本冲突,出现各种报错。
目录
检查机制
conda有严格的检查机制,会配套安装依赖,能够保证当前安装的package安装好后能work,但是conda只检查用conda安装的package。例如,新安装的package需要依赖numpy ,本地已有使用pip安装的numpy(1.19.2),conda在新安装package时可能会视为没有numpy,然后通过conda再安装一个依赖版本的numpy(1.18.5)。这时候,两个numpy就会冲突。甚至报错DLL load failed: 找不到指定的模块。
pip的检查机制相对宽松,可以既检查conda安装过的package的也检查pip安装过的package。并不保证当前环境的所有包的所有依赖关系都同时满足。当某个环境所安装的包越来越多,产生冲突的可能性就越来越大。
支持语言
conda 是跨平台的通用包和环境管理器,可以支持多种语言
pip 是 python 官方推荐的包下载工具,但是只能安装python包
库的位置
conda install:这种方式安装的库都会放在anaconda3/pkgs目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。
pip install:分两种情况,如果当前conda环境使用系统的的python,则库会被保存在 ~/.local/lib/python3.x/site-packages文件夹中;如果使用的是当前conda环境内置的python,则库会被保存到 anaconda3/envs/current_env/lib/site-packages中
环境隔离
conda 可以直接创建隔离的环境,例如conda create -n 环境名 python=3.6
pip 没有内置支持环境隔离,只能借助其他工具例如virtualenv or venv实现环境隔离
编译情况
conda 里的软件包都是二进制文件,下载后即可使用,不需要经过编译
pip 里的软件包为wheel版或者源代码发行版。wheel属于已编译版的一种,但而源代码发行版必须要经过编译生成可执行程序后才能使用。