Anaconda与conda、pip与conda的区别 - 搬运
Anaconda与conda、pip与conda的区别
在下载Package的时候,到底是要用pip还是conda?它俩到底是什么关系,有什么区别?
本文就将分析一下,Anaconda与conda、pip与conda的区别。
Conda发行于2012年,是一个开源的、跨平台的包和环境管理工具。
一、Conda和Anaconda的区别
尽管Conda被打包在了Anaconda中,这两个是有着不同目标的不同事物。
Conda和Anaconda经常会被混淆,可能是因为Conda被紧密地打包进了Anaconda和Miniconda中。
Anaconda是一个软件发行版。软件发行版是一个预先建立和配置好的packages的集合,可以被安装在操作系统上,并被使用。Anaconda是由Anaconda公司开发的,一个包含PyData生态中的核心软件的完全发行版,它包含了Python本身和数百个第三方开源项目的二进制文件,例如conda、numpy、scipy、ipython等。
Miniconda也是一个软件发行版。Miniconda本质上是一个用来安装空的conda环境的安装器,它仅包含Conda和Conda的依赖,而不包含上一段中列举的包。所以我们可以从零开始,安装我们需要的东西。当然,我们也可以通过conda intall anaconda来将anaconda安装到其中。
Conda是一个包和环境管理工具。包管理工具是一个用来自动化安装、升级、删除packages的工具。由于Conda拥有“conda install“、”conda update“、”conda remove“等子命令,它完全符合包管理工具的定义。
注意:如果你愿意,我们可以完全独立地、在没有Anaconda和Miniconda的情况下安装Conda。
二、Conda和Pip的区别
Conda是一个与语言无关的跨平台包和环境管理器。虽然conda发源于Python的PyData社区,但是它不仅适用于管理Python包,而且还是一个通用的包管理工具。用conda可以创建、管理任何类型的、用任何语言写的包和依赖。它很像一个跨平台版本的apt或者yum。
Conda只能在conda环境中安装包,但是可以安装各种语言、各种类型的包。
所以说,如果我们希望在一个已有的系统Python环境中安装Python包,conda是帮不了我们的,因为它只能在conda环境中安装包。
Pip是Python包的通用管理器。pip的全称是Pip Install Packages,它是一个Python官方认证的包管理工具。它只能管理python包,通常用于安装发布在Python Package Index(PyPI)上面的包。Pip和PyPI均由Python Packaging Authority(PyPA)管理和支持。
Pip可以在任何环境中安装包,但是只能安装Python包。
所以说,如果我们需要用到很多依赖于外部dependencies的Python包(例如NumPy、SciPy和Matplotlib),或者如果我们想要跟踪这些包的外部依赖,那么pip是帮不了我们的,因为它只能管理Python包。
如果我们要做的仅仅是在相互独立的环境中安装Python包,那么conda的作用和pip+virtualenv的作用几乎是一样的。其中“相互独立的环境”指的是conda环境或者是virtualenv,在这样的环境中,我们可以在不修改系统Python安装的前提下安装各种包。
下面是conda和pip的特性对比:
conda | pip | |
---|---|---|
管理 | 二进制 | wheel或源码 |
需要编译器 | No | Yes |
语言 | Any | Python |
虚拟环境 | 支持 | 通过virtualenv或venv等支持 |
依赖性检查 | Yes | 屏幕提示用户选择 |
包来源 | Anaconda repo和Cloud | PyPI |
三、Conda和pip+virtualenv的区别
前面说到,如果我们要做的仅仅是在相互独立的环境中安装Python包,那么conda的作用和pip+virtualenv的作用几乎是一样的。
但是两者仍然有一些区别。
首先,在conda环境下,我们可以管理不同版本的Python,包括安装和升级Python本身。但是virtualenvs必须基于一个已经存在的、有外部管理的Python可执行文件。virtualenv能实现的只是不同环境下的python包互相独立,但是不同环境下用的python是同一个版本。
其次,conda可以跟踪非Python的依赖,例如无缝地管理依赖关系,或者是基本工具(如LAPACK或OpenSSL)的并行版本。
再次,conda环境是放在一个可执行路径中的真正独立的环境。virtualenv的环境是建立于符号链接(symlinks)的环境,这种环境打破了virtualenv的独立性,有时候对于非python的dependencies来说是很脆弱的。
最后,我们可以运行conda install pip,然后我们就可以在conda环境中用pip install来安装python包了。不过,我们最好不要再virtualenv里面装conda,否课可能出现一些奇怪的问题。
四、Conda与Anaconda公司的关系
Conda与Anaconda公司没有依赖或者是捆绑的关系。它是100%开源的,它被托管在GitHub上,使用BSD-License。但是,conda的默认channel不是完全开源的,大概还有几十个包没有开源。
Anaconda公司的一个重要服务是对于build artifacts提供免费的托管服务,不过如果对于Anaconda未来会收费有担心,我们也不是一定要用Anaconda的托管服务。
目前有一个2016年发起的、由社区赞助、由社区主导的工作,即Conda-Forge。它使得conda的打包和分发完全开源。所有的包被托管再Github上,同时使用免费的CI工具(例如Mac上的Travis CI,Windows上的AppVeyor,Linux上的CircleCI)来自动创建二进制文件。每一个包的所有的metadata储存再Github仓库上,并且包的升级通过merge GitHub的pull request来完成。
Conda-Forge也会把它的包发布到https://anaconda.org/上。
值得一提的是,conda包是由营利性公司Anaconda公司托管的。同样的,Python Package Index是由营利性公司Packspace公司托管的。
Anaconda与conda、pip与conda的区别 - 搬运的更多相关文章
- Anaconda安装第三方库与pip和conda 添加国内源
Anaconda安装第三方库 PIP使用命令 Anaconda命令 pip和conda 添加国内源 1:PIP相关命令 卸载 pip uninstall XXX 1.升级pip python -m p ...
- pip与conda的区别
pip和conda到底有什么不一样? 今天看到我的foreman开始报错去询问才发现.我们的python包管理工具已经从pip整体迁移到了conda..最近的迁移真的非常多..前端也在迁移打包 跟着发 ...
- Scrapy安装教程 pip 或 conda 两种安装方法.
cmd: pip -V 查看pip版本 pip install --upgrade pip 升级最高版本 https://sourceforge.net/projects/py ...
- Python 包管理工具 pip 与 conda
简介 pip是接触 python 后最早认识的包管理工具.通过使用 pip 能够自动下载和解决不同 python 模块的依赖问题,使 python 的配置过程变得简单. 与 pip 类似,conda ...
- pip 与 conda
pip 与 conda 简介 pip 是接触 python 后最早认识的包管理工具.通过使用 pip 能够自动下载和解决不同 python 模块的依赖问题,使 python 的配置过程变得简单. 与 ...
- pip和conda安装源更改
pip和conda安装源更改 python模块安装,使用国内源可以提高下载速度. pip源更改: pip源有好几个,我一直用的清华的pip源,它5分钟同步一次. 临时使用: pip 后加参数 -i h ...
- pip和conda添加国内清华镜像源(亲测有效)
文章目录 pip和conda 添加国内清华镜像 1. pip源更改: 2. conda源更改: pip和conda 添加国内清华镜像 python模块安装,使用国内源可以提高下载速度. 1. pip源 ...
- virtualenv, conda, pip分别是什么
自己一直使用virtualenv,但是发现很多工具或框架都是以来conda,于是就网上搜了下二者的区别,感觉这篇文章讲的比较清楚:https://blog.csdn.net/zhouchen1998/ ...
- pip 和 Conda 镜像站配置
如果你经常使用 Python,那么你对 pip 和 Conda 一定不陌生,它们作为包管理器,可以非常方便的帮助我们下载需要的 Python 包,但是受限于大多 Python 包的服务器在国外,国内下 ...
- 深度学习环境搭建常用网址、conda/pip命令行整理(pytorch、paddlepaddle等环境搭建)
前言:最近研究深度学习,安装了好多环境,记录一下,方便后续查阅. 1. Anaconda软件安装 1.1 Anaconda Anaconda是一个用于科学计算的Python发行版,支持Linux.Ma ...
随机推荐
- sed: -e 表达式 #1, 字符 1: 未知的命令:“'”
https://blog.csdn.net/linmingan/article/details/80007727 加双引号!! 利用sed更改文件test.txt的第一行为abc: sed -i '1 ...
- DB2日常维护操作
一. DB2日常维护操作 1.数据库的启动.停止.激活 db2 list active databases db2 active db 数据库名 db2start --启动 db2stop [forc ...
- 解决“chrome正受到自动测试软件的控制”信息栏显示问题
在使用Selenium WebDriver启动谷歌浏览器Chrome时,在新启动的浏览器地址栏下方经常会显示一行提示信息:"chrome正受到自动测试软件的控制",英文的就是&qu ...
- 替代学习物联网-云服务-03腾讯云MQTT
1.登录(利用微信) https://console.cloud.tencent.com/iothub 2.新建产品 3.添加设备 4.设备详细参数 域名IP固定: iotcloud-mqtt.gz. ...
- ethcat开发记录 三
一.关于controlword的控制 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 保留 待定 暂停 故障复位 模式有关 伺服使能 快停 上电 伺服准备好
- Windows系统Redis集群搭建
一.参考网址 https://mp.weixin.qq.com/s/ImdEJTdAmCFJsT55rici0Q 二.Redis版本 注意:搭建windows版的redis集群,redis的版本需要5 ...
- vue、react配置gzip打包后,删除源文件deleteOriginalAssets: true,nginx需要的配置
1.删除源文件后,配置了gzip,当配置gzip删除源文件后,解决前端history问题,就会出现所有的都返回html,请求js.css也会返回html,页面会报错,如下配置即可 location / ...
- mitudesk的pytorch基础
pytorch定义张量的方法和Numpy差不多 2. 标量才能对张量求导,代表其在各个方向上的偏导数,结果是一个张量 3. 在pyt中张量可以对张量求导,前提条件是求导时传一个1,1,1,1,进去,其 ...
- Phpstorm 最新永久激活教程
使用ja-netfilter激活Jetbrains系列软件 注意:无限试用脚本已经失效.本教程适合2021.3.*之上的高版本,使用ja-netfilter插件进行激活操作,永久有效 激活步骤: 第一 ...
- 更改docker里mysql的字符编码
进入容器: docker exec -it 容器id/容器名称 bash cp时容器中的目录写法 容器名称/容器id:容器目录 退出容器使用exit 1 首先去mysql容器中寻找mysq ...