首页 文章

pip和conda有什么区别?

提问于
浏览
481

我知道 pip 是python包的包管理器 . 但是,我看到IPython网站上的安装使用 conda 来安装IPython .

我可以使用 pip 来安装IPython吗?当我已经拥有 pip 时,为什么我应该使用 conda 作为另一个python包管理器?

pipconda 之间有什么区别?

9 回答

  • 339

    引用Conda blog

    长期参与python世界,我们都知道pip,easy_install和virtualenv,但这些工具并不能满足我们所有的特定要求 . 主要问题是它们专注于Python,忽略了非Python库依赖项,如HDF5,MKL,LLVM等,它们的源代码中没有setup.py,也没有将文件安装到Python的站点中-packages目录 .

    因此,Conda是一个包装工具和安装程序,旨在做的不仅仅是 pip ;处理Python包之外的库依赖项以及Python包本身 . Conda还创建了一个虚拟环境,如 virtualenv .

    因此,Conda应该与Buildout进行比较,这可能是另一个允许您处理Python和非Python安装任务的工具 .

    因为Conda引入了新的包装格式,所以不能互换使用 pip 和Conda; pip 无法安装Conda包格式 . 您可以并排使用这两个工具(通过 pip 安装 conda install pip ),但它们也不能互操作 .

  • 2

    Conda for Data Science文章引用连续网站:

    Conda vs pip Python程序员可能熟悉pip从PyPI下载包并管理他们的要求 . 虽然conda和pip都是包管理器,但它们是非常不同的:Pip特定于Python包,而conda与语言无关,这意味着我们可以使用conda来管理来自任何语言的包Pip从源代码编译并且conda安装二进制文件,删除编译的负担Conda本身创建了与语言无关的环境,而pip依赖virtualenv来管理Python环境虽然建议总是使用conda包,但conda也包括pip,所以你不必在两者之间做出选择 . 例如,要安装一个没有conda包但可通过pip获得的python包,只需运行,例如:

    conda install pip
    pip install gensim
    
  • 0

    这是一个简短的纲要:

    • Python包 .

    • 从源代码编译所有内容 . EDIT: pip now installs binary wheels, if they are available.

    • 由核心Python社区祝福(即,Python 3.4包含自动提升pip的代码) .

    conda

    • Python不可知 . 现有软件包的主要关注点是Python,实际上conda本身是用Python编写的,但你也可以为C库或R软件包提供conda软件包,或者真的有任何东西 .

    • 安装二进制文件 . 有一个名为 conda build 的工具可以从源代码构建软件包,但 conda install 本身可以从已构建的conda软件包中安装 .

    • 外部 . Conda是Anaconda的软件包管理器,它是由Continuum Analytics提供的Python发行版,但它也可以在Anaconda之外使用 . 您可以通过pip安装将它与现有的Python安装一起使用(尽管除非您有充分的理由使用现有安装,否则不建议这样做) .

    在这两种情况下:

    • 用Python编写

    • 开源(conda是BSD,pip是麻省理工学院)

    conda的前两个要点实际上是什么使它比许多包装的pip更有利 . 由于pip是从源代码安装的,如果你无法编译源代码就很难安装它(在Windows上尤其如此,但如果软件包有一些困难的C或FORTRAN库,它甚至可以在Linux上运行依赖) . Conda从二进制安装,意味着有人(例如Continuum)已经完成了编译包的艰苦工作,因此安装很容易 .

    如果您有兴趣构建自己的包,也会有一些差异 . 例如,pip Build 在setuptools之上,而conda使用自己的格式,这有一些优点(比如静态,再次,Python不可知) .

  • 193

    不要混淆你,但你也可以在你的conda环境中使用pip,这可以验证上面的一般与python特定的管理者评论 .

    conda install -n testenv pip
    source activate testenv
    pip <pip command>
    

    您还可以将pip添加到任何环境的默认包中,以便每次都存在,这样您就不必遵循上面的代码段 .

  • 22

    pip 仅适用于Python

    conda 仅适用于Anaconda等其他科学软件包,如R依赖等 . 不是每个人都需要已经附带Python的Anaconda . Anaconda主要面向那些进行机器学习/深度学习等的人 . 休闲Python开发人员不会在他的笔记本电脑上运行Anaconda .

  • 9

    我可以使用pip来安装iPython吗?

    当然,两者(第一页上页)

    pip install ipython
    

    (第三种方法,第二种方法是 conda

    您可以从GitHub或PyPI手动下载IPython . 要安装其中一个版本,请将其解压缩并使用Terminal:pip install从顶级源目录运行以下命令 .

    officially recommended ways to install .

    当我已经拥有pip时,为什么我应该使用conda作为另一个python包管理器?

    如上所述here

    如果您需要特定的包,可能只针对一个项目,或者如果您需要与其他人共享项目,那么conda似乎更合适 .

    康达超越点(YMMV

    • 使用非python工具的项目

    • 与同事分享

    • 版本之间切换

    • 在具有不同库版本的项目之间切换

    pip和conda有什么区别?

    其他人都广泛回答了这个问题 .

  • 73

    其他答案给出了详细的详细描述,但我想强调一些高级别的要点 .

    pip是一个包管理器,便于 python packages 的安装,升级和卸载 . 它也适用于虚拟 python 环境 .

    conda是 any software (安装,升级和卸载)的包管理器 . 它也适用于虚拟 system 环境 .

    conda设计的目标之一是促进用户所需的整个软件堆栈的包管理,其中一个或多个python版本可能只是一小部分 . 这包括低级库,如线性代数,编译器,如Windows上的mingw,编辑器,Hg和Git等版本控制工具,或其他需要分发和管理的工具 .

    对于版本管理,pip允许您在多个 python 环境之间切换和管理 .

    Conda允许您在_502996之间切换和管理 multiple general purpose environments ,其中多个其他内容可能因版本号而异,例如C库,编译器,测试套件或数据库引擎等 .

    Conda不是以Windows为中心的,但在Windows上,当需要安装和管理需要编译的复杂科学包时,它是目前可用的优秀解决方案 .

    当我想到在Windows上通过pip编译许多这些软件包失去了多少时间,或者在需要编译时调试失败的 pip install 会话时,我想要哭泣 .

    最后一点,Continuum Analytics还托管(免费)binstar.org(现称为repo.continuum.io),允许常规软件包开发人员创建自己的自定义(内置!)软件堆栈,其软件包用户可以从中获得 conda install .

  • 10

    For WINDOWS users

    “标准”包装工具的情况最近有所改善:

    在pypi本身_999_,截至9月,现在有48%的轮组 . 2015年11月(2015年5月为38%,2014年9月为24%),

    • 轮式格式现在支持每个最新的python 2.7.9开箱即用,

    “标准”“调整”包装工具的情况也在改善:

    • 你可以在http://www.lfd.uci.edu/~gohlke/pythonlibs找到几乎所有轮式的科学包装,

    • mingwpy项目可能会为Windows用户带来一天的“编译”包,允许在需要时从源安装所有内容 .

    "Conda"包装对于其服务的市场仍然更好,并突出了"standard" should 改善的领域 .

    (此外,依赖规范多次努力,在标准轮系统和conda系统或buildout中,并不是非常pythonic,如果所有这些包装'核心'技术可以通过某种PEP汇聚,那将是很好的)

  • 17

    引自Conda: Myths and Misconceptions(全面描述):

    ...

    神话#3:Conda和pip是直接竞争对手

    Reality: Conda and pip serve different purposes, and only directly compete in a small subset of tasks: namely installing Python packages in isolated environments.

    Pip代表 P ip I nstalls P ackages,是Python官方认可的软件包管理器,最常用于安装Python Package Index(PyPI)上发布的软件包 . pip和PyPI都受Python Packaging Authority(PyPA)的支配和支持 .

    简而言之,pip是Python包的通用管理器; conda是一个与语言无关的跨平台环境管理器 . 对于用户来说,最显着的区别可能就是:pip在任何环境中安装python包; conda在conda环境中安装任何软件包 . 如果您所做的只是在隔离环境中安装Python包,那么conda和pip virtualenv大多可以互换,模块化依赖性处理和包可用性方面的差异 . 隔离环境我指的是conda-env或virtualenv,您可以在其中安装包而无需修改系统Python安装 .

    即使放弃神话#2,如果我们只专注于安装Python软件包,conda和pip会为不同的受众和不同目的服务 . 如果你想在现有系统Python安装中管理Python包,conda无法帮助你:按照设计,它只能在conda环境中安装包 . 比方说,如果您想使用依赖外部依赖项的许多Python包(NumPy,SciPy和Matplotlib是常见的)例子),虽然以有意义的方式跟踪这些依赖关系,但是pip无法帮助你:在设计上,它管理Python包,只管理Python包 .

    Conda和pip不是竞争对手,而是专注于不同用户群和使用模式的工具 .

相关问题