pip和conda有什么区别?
我知道pip
是Python包的包pipe理器。 不过,我在IPython的网站上看到安装使用conda
来安装IPython。
我可以使用pip
来安装IPython吗? 为什么我应该使用conda
作为另一个Python包pipe理器,当我已经有pip
?
pip
和conda
什么区别?
从Conda博客引用:
长期以来一直参与Python世界,我们都知道pip,easy_install和virtualenv,但是这些工具并没有达到我们所有的特定要求。 主要的问题是它们都是围绕着Python,而忽略了非Python库的依赖,比如HDF5,MKL,LLVM等,它们的源代码中没有setup.py,也没有将文件安装到Python的站点-packages目录。
所以康达是一个打包工具和安装程序,旨在做比pip
更多的工作; 处理Python包之外的库依赖关系以及Python包本身。 Conda还创build了一个虚拟环境,就像virtualenv
一样。
因此,应该将Conda与Buildout进行比较, 这也许是另一个可以同时处理Python和非Python安装任务的工具。
由于Conda引入了新的包装格式,所以不能同时使用pip
和Conda; pip
不能安装Conda软件包格式。 您可以并排使用这两种工具,但它们也不能互操作。
这是一个简短的概要:
果仁
- Python包只。
- 编译从源代码的一切。 编辑:点子现在安装二进制轮子,如果他们可用。
- 由Python核心社区所支持(即Python 3.4+包含自动增强pip的代码)。
康达
- Python不可知论者。 现有软件包的主要重点是Python,而conda本身是用Python编写的,但是你也可以为C库或R软件包,或者其他任何东西包含conda软件包。
- 安装二进制文件。 有一个名为
conda build
的工具,它可以从源代码构build软件包,但是conda install
本身是从已经构build好的conda软件包中安装的。 - 外部。 Conda是Continuum Analytics提供的Python发行版Anaconda的包pipe理器,但它也可以在Anaconda之外使用。 您可以使用现有的Python安装,通过pip安装它(尽pipe除非您有足够的理由使用现有安装,否则不build议这样做)。
在这两种情况下:
- 用Python编写
- 开源(conda是BSD,pip是MIT)
conda的前两个子弹点实际上是使许多软件包比pip更有优势。 由于pip是从源代码安装的,所以如果你不能编译源代码,那么安装它会很麻烦(在Windows上尤其如此,但是如果软件包有一些困难的C或FORTRAN库,甚至在Linux上也可能是这样)依赖)。 Conda从二进制安装,这意味着有人(例如,Continuum)已经完成了编译软件包的艰苦工作,所以安装很容易。
如果您有兴趣构build自己的软件包,也有一些差异。 比如,pip是build立在setuptools之上的,而conda使用它自己的格式,它有一些优点(比如静态的,Python不可知的)。
其他答案对细节进行了公正的描述,但是我想强调一些高层次的观点。
pip是一个软件包pipe理器,可以帮助安装,升级和卸载python软件包 。 它也适用于虚拟python环境。
conda是任何软件 (安装,升级和卸载)的软件包pipe理器。 它也适用于虚拟系统环境。
condadevise的目标之一就是简化用户所需的整个软件栈的包pipe理,其中一个或多个python版本可能只是一小部分。 这包括低级库,比如线性代数,编译器,比如Windows上的mingw,编辑器,版本控制工具如Hg和Git,或者任何其他需要分发和pipe理的工具 。
对于版本pipe理,pip允许您在多个python环境之间切换和pipe理。
Conda允许您在多个通用环境之间切换并pipe理多个其他版本号可能不同的通用环境 ,如C库,编译器,testing套件或数据库引擎等。
Conda不是以Windows为中心的,但是在Windows上,它是当前需要安装和pipe理需要编译的复杂科学软件包时的优秀解决scheme。
当我想到在Windows上通过pip编译许多这些软件包,或者在需要编译时debugging失败的pip install
会话时,我想哭一次。
作为最后一点,Continuum Analytics还托pipe(免费) binstar.org (现称为repo.continuum.io ),允许常规软件包开发人员创build他们自己的定制(内置!)软件堆栈,其软件包用户将能够conda install
从… conda install
。
不要进一步混淆你,但你也可以在你的conda环境中使用pip,它validation上面的通用与python特定的经理注释。
conda install -n testenv pip source activate testenv pip <pip command>
您也可以将pip添加到任何环境的默认包中,以便每次都出现,因此您不必遵循上面的代码片段。
对于WINDOWS用户
“标准”包装工具近况正在改善:
-
在pypi本身,截至9月份,轮胎包装现在占了48%。 2015年11月份(2015年5月份的38%,2014年9月份的24%),
-
现在每个最新的python 2.7.9都支持轮盘格式,
“标准”+“调整”包装工具的情况也在改善:
-
你可以在http://www.lfd.uci.edu/~gohlke/pythonlibs上find几乎所有关于车轮格式的科学软件包,;
-
mingwpy项目可能会为windows用户带来一天的“编译”包,允许在需要时从源代码安装所有东西。
“康达”包装对其所服务的市场来说仍然更好,并突出了“标准” 应该改进的地方。
(另外,在标准轮系和conda系统中的依赖规格多重化,或者扩展,不是很pythonic,如果所有这些包装的“核心”技术都可以通过一种PEP来收敛,那将是很好的)
从Conda引用数据科学文章到连续性网站:
Conda vs pip
Python程序员可能熟悉pip从PyPI下载软件包并pipe理他们的需求。 虽然conda和pip都是一揽子pipe理者,但他们却有很大的不同:
- Pip特定于Python包,conda是语言不可知的,这意味着我们可以使用conda来pipe理来自任何语言的包。Pip从源代码编译,conda安装二进制文件,消除了编译的负担
- Conda在本地创build语言无关的环境,而pip依赖于virtualenv来pipe理只有Python环境虽然build议始终使用conda包,conda也包含pip,所以您不必在两者之间进行select。 例如,要安装一个没有conda软件包,但是通过pip可用的python软件包,只需运行,例如:
conda install pip pip install gensim
从Conda引用:神话与误解 (综合描述):
…
神话#3:Conda和pip是直接的竞争对手
现实:Conda和pip服务于不同的目的,只是直接竞争一小部分任务:即在独立的环境中安装Python包。
Pip代表Python安装包,是Python官方认可的包pipe理器,最常用于安装发布在Python包索引(PyPI)上的包。 Python包装pipe理局(PyPA)pipe理和支持pip和PyPI。
简而言之,pip是Python包的通用pipe理器; conda是一个语言不可知的跨平台环境pipe理器。 对于用户来说,最显着的区别可能是这样的:pip在任何环境中安装python包; conda在conda环境中安装任何软件包。 如果你所做的只是在一个孤立的环境中安装Python包,conda和pip + virtualenv大部分是可以互换的,在依赖处理和包可用性方面有些不同。 隔离的环境是指conda-env或者virtualenv,你可以在其中安装软件包而不用修改你的系统Python安装。
即使抛开神话2,如果我们只关注Python包的安装,conda和pip服务不同的受众和不同的目的。 如果你想在现有的系统Python安装中pipe理Python包,conda不能帮你:在devise上,它只能在conda环境下安装包。 如果你想要使用依赖于外部依赖的许多Python包(NumPy,SciPy和Matplotlib是常见的例子),在用有意义的方式跟踪这些依赖关系的时候,pip不能帮你:在devise上,它pipe理Python包和只有Python包。
Conda和pip不是竞争对手,而是专注于不同用户群和使用模式的工具。
我可以使用pip来安装iPython吗?
当然,两者(第一个方法在页面上)
pip install ipython
(第三种方法,第二种是conda
)
您可以从GitHub或PyPI手动下载IPython。 要安装这些版本之一,请解压缩并使用terminal从顶级源目录运行以下命令:
pip install .
是正式推荐的安装方式 。
为什么我应该使用conda作为另一个Python包pipe理器,当我已经有点子?
如这里所说:
如果你需要一个特定的包,也许只有一个项目,或者如果你需要与其他人分享项目,conda似乎更合适。
Conda超越点差( YMMV )
- 使用非python工具的项目
- 与同事分享
- 在版本之间切换
- 在具有不同库版本的项目之间切换
pip和conda有什么区别?
这被其他人广泛回答。