Qual é a diferença entre pip e conda?

723

Eu sei que pipé um gerenciador de pacotes para pacotes python. No entanto, vi a instalação no site do IPython usarconda para instalar o IPython.

Posso usar pippara instalar o IPython? Por que devo usar condacomo outro gerenciador de pacotes python quando já tenhopip ?

Qual é a diferença entre pipe conda?

lazywei
fonte
Lendo cuidadosamente a página de instalação você verá instruções completo de instalar com pip e que conda/ enpgké dirigido a new users who want to get up and running with minimal effort: copa / anaconda são environement autônomo, que não interferem com python sistema (como venv mas mais poderoso). BTW IPyhton, não ipython (superior caso I)
Matt
3
Uma diferença é que muito mais coisas podem ser instaladas pelo pip do que pelo conda: o pip pode instalar qualquer coisa do pypi em um comando. O conda requer três comandos: esqueleto, construção, instalação e possivelmente mais se isso não funcionar. O pip pode instalar qualquer coisa do github ou source em um comando. O conda exige a criação de uma "receita", o que não é fácil, principalmente porque a documentação sempre parece estar incorreta / desatualizada.
endolith 22/02
5
Pergunta relacionada: Quais são as vantagens de pip over conda? Vejo muita advocacia da Anaconda abaixo, mas nada para o pip. Por que o pip ainda é o padrão, se o anaconda é tão bom?
Brian Postow
24
Acho esta citação esclarecedora: " Pip é um gerenciador de pacotes e o Virtualenv é um gerenciador de ambiente. Conda é ambos." ( ref. )
Ocorreu em 20/01/19
1
Observação: Eu costumava pensar que conda implicava o download de um zilhão de pacotes, mas isso aparentemente não é mais verdade: você pode instalar o miniconda, que parece ser apenas o gerenciador de pacotes, conda.io/docs/install/quick.html
Hugh Perkins

Respostas:

521

Citando a partir do blog Conda :

Como estamos envolvidos no mundo python há tanto tempo, todos conhecemos pip, easy_install e virtualenv, mas essas ferramentas não atendiam a todos os nossos requisitos específicos. O principal problema é que eles estão focados no Python, negligenciando dependências de bibliotecas que não são do Python, como HDF5, MKL, LLVM etc., que não possuem um setup.py no código-fonte e também não instalam arquivos no site do Python diretório -packages.

Portanto, o Conda é uma ferramenta e instalador de empacotamento que visa fazer mais do que aquilo que pipfaz; lida com dependências da biblioteca fora dos pacotes Python, bem como dos próprios pacotes Python. A Conda também cria um ambiente virtual, como virtualenvfaz.

Como tal, talvez o Conda deva ser comparado ao Buildout , outra ferramenta que permite lidar com tarefas de instalação Python e não Python.

Como o Conda introduz um novo formato de embalagem, você não pode usar o pipConda de forma intercambiável; pipNão é possível instalar o formato do pacote Conda. Você pode usar as duas ferramentas lado a lado (instalando pipcom conda install pip), mas elas também não interoperam.

Desde que escrevemos esta resposta, a Anaconda publicou uma nova página sobre Entendendo Conda e Pip , que também reflete isso:

Isso destaca uma diferença importante entre conda e pip. O Pip instala pacotes Python, enquanto o conda instala pacotes que podem conter software escrito em qualquer idioma. Por exemplo, antes de usar o pip, um intérprete Python deve ser instalado por meio de um gerenciador de pacotes do sistema ou baixando e executando um instalador. Por outro lado, a Conda pode instalar pacotes Python, bem como o interpretador Python diretamente.

e mais adiante

Ocasionalmente, é necessário um pacote que não está disponível como um pacote conda, mas está disponível no PyPI e pode ser instalado com o pip. Nesses casos, faz sentido tentar usar o conda e o pip.

Martijn Pieters
fonte
18
Obrigado pela sua explicação. Ainda estou confuso, no entanto, se a Conda pode substituir o pip? ou seja, a Conda pode fazer tudo o que o pip pode fazer?
Lazywei
10
@ Lazywei: Eu não acho que pode; não parece que o Conda seja compatível com o formato de arquivo de roda, por exemplo. Eles têm objetivos diferentes.
Martijn Pieters
45
@ naught101 "Basta criar uma receita" Isso não é tão fácil quanto digitar pip install.
endolith 20/02
23
Alguns podem me explicar o que aconteceria se você usasse o pip e o conda para instalar o mesmo pacote, exceto com uma versão diferente, que o python usaria ao importá-los?
Lance Ruo Zhang
4
@jrh: você não pode instalar várias versões do mesmo pacote lado a lado ao usar o gerenciador de pacotes do SO, não como um recurso principal. A Conda gerencia ambientes , cada um com seu próprio mix de pacotes instalados em versões específicas. Portanto, o projeto A, desenvolvido há algum tempo, ainda pode se apegar a uma versão mais antiga da biblioteca Foo (nenhum recurso disponível para atualizar o projeto para funcionar com uma versão mais recente), enquanto o projeto B requer a versão mais recente da mesma biblioteca.
Martijn Pieters
246

Aqui está um breve resumo:

pip

  • Apenas pacotes Python.
  • Compila tudo da fonte. EDIT: pip agora instala rodas binárias, se estiverem disponíveis.
  • Abençoado pela comunidade principal do Python (ou seja, o Python 3.4+ inclui código que inicializa automaticamente o pip).

conda

  • Python agnóstico. O foco principal dos pacotes existentes é para o Python, e de fato o próprio Conda é escrito em Python, mas você também pode ter pacotes do Conda para bibliotecas C, ou pacotes R, ou qualquer outra coisa.
  • Instala binários. Existe uma ferramenta chamada conda buildque cria pacotes a partir do código-fonte, mas conda installinstala coisas a partir de pacotes Conda já construídos.
  • Externo. Conda é o gerenciador de pacotes do Anaconda, a distribuição Python fornecida pelo Continuum Analytics, mas também pode ser usada fora do Anaconda. Você pode usá-lo com uma instalação existente do Python instalando o pip (embora isso não seja recomendado, a menos que você tenha um bom motivo para usar uma instalação existente).

Em ambos os casos:

  • Escrito em Python
  • Código aberto (Conda é BSD e pip é MIT)

Os dois primeiros pontos da Conda são realmente o que o torna vantajoso em relação ao pip para muitos pacotes. Como o pip é instalado a partir do código-fonte, pode ser doloroso instalar coisas com ele, se você não conseguir compilar o código-fonte (isso é especialmente verdade no Windows, mas pode ser verdade no Linux, se os pacotes tiverem uma biblioteca C ou FORTRAN difícil) dependências). O Conda é instalado a partir do binário, o que significa que alguém (por exemplo, Continuum) já fez o trabalho duro de compilar o pacote e, portanto, a instalação é fácil.

Existem também algumas diferenças se você estiver interessado em criar seus próprios pacotes. Por exemplo, o pip é construído sobre as ferramentas de instalação, enquanto o Conda usa seu próprio formato, que tem algumas vantagens (como ser estático e, novamente, independente do Python).

asmeurer
fonte
21
O pip não cria mais tudo da fonte. Se uma roda estiver disponível, pip install --use-wheel <package>instalará um pacote construído. Veja aqui: wheel.readthedocs.org/en/latest . No entanto, minha experiência pessoal com a roda é que há tão poucos pacotes científicos disponíveis que são puramente acadêmicos. E é claro que a instalação do pip geralmente não funciona no Windows se o ambiente de compilação não estiver configurado exatamente da maneira certa. Então, no momento, conda ftw.
Caleb Hattingh
4
As rodas ainda são novas e não são usadas por padrão, portanto, não é surpreendente que ainda não existam muitas delas. O Wheel ainda se encaixa na categoria "específico do Python", o que significa que pode ser um ajuste inadequado para pacotes não-Python ou pacotes Python que dependem de pacotes não-Python.
precisa saber é o seguinte
4
Eu tive que rebaixar isso: o segundo ponto é apenas uma nota histórica agora, mas você vai fazer isso mais tarde também. A principal diferença atualmente é que o pip é um gerenciador de pacotes, enquanto o conda é mais um gerenciador de ambiente.
Shep
9
É verdade que o pip pode compilar a partir do código-fonte, mas isso está se tornando cada vez menos frequente à medida que mais pacotes mudam: hoje em dia eu posso instalar a maior parte do que preciso em alguns segundos com o pip. Então não é que essa resposta está errada, é apenas tornar-se um pouco desatualizado como pip melhorou bastante nos últimos anos
Shep
4
Tem nunca mais foi verdade que pip só pode instalar a partir da fonte. Antes das rodas, tínhamos ovos como o formato de instalação binária padrão e o formato de distribuição recomendado para instalações do Windows, e o pip instalaria (e ainda instalará) ovos, se essa for a melhor opção disponível.
Martijn Pieters
96

As outras respostas fornecem uma descrição correta dos detalhes, mas quero destacar alguns pontos de alto nível.

O pip é um gerenciador de pacotes que facilita a instalação, atualização e desinstalação de pacotes python . Também funciona com ambientes python virtuais .

O conda é um gerenciador de pacotes para qualquer software (instalação, atualização e desinstalação). Também funciona com ambientes de sistema virtual .

Um dos objetivos do design do conda é facilitar o gerenciamento de pacotes para toda a pilha de software exigida pelos usuários, das quais uma ou mais versões python podem ser apenas uma pequena parte. Isso inclui bibliotecas de baixo nível, como álgebra linear, compiladores, como mingw no Windows, editores, ferramentas de controle de versão como Hg e Git ou qualquer outra coisa que exija distribuição e gerenciamento .

Para gerenciamento de versão, o pip permite alternar e gerenciar vários ambientes python .

O Conda permite alternar e gerenciar vários ambientes de uso geral, nos quais várias outras coisas podem variar no número da versão, como bibliotecas C, compiladores, suítes de teste ou mecanismos de banco de dados e assim por diante.

A Conda não é centrada no Windows, mas no Windows é de longe a solução superior atualmente disponível quando pacotes científicos complexos que exigem compilação precisam ser instalados e gerenciados.

Quero chorar quando penso em quanto tempo perdi tentando compilar muitos desses pacotes via pip no Windows ou depurar pip installsessões com falha quando a compilação era necessária.

Como ponto final, o Continuum Analytics também hospeda (gratuito) o binstar.org (agora chamado anaconda.org ) para permitir que desenvolvedores regulares de pacotes criem suas próprias pilhas de software personalizadas (integradas!), Das quais seus usuários de pacotes poderão usar conda install.

Caleb Hattingh
fonte
4
Por seu ponto final, o terceiro Conda-forja projeto tornou-se rapidamente a abordagem padrão da indústria para publicar pacotes Anaconda. Recentemente, publicamos vários pacotes hospedados pelo conda-forge para o nosso simulador de biologia multifísica - e não podemos recomendar o processo o suficiente. Há um componente de revisão por pares baseado no PR do GitHub para o envio de novas receitas ao conda-forge, mas as vantagens em termos de automação do conda-forge superam fortemente o investimento inicial de tempo. Bam!
Cecil Curry
@CecilCurry Eu importei Kerasno meu código, instalei o anaconda no meu mac e o Keras está condainstalado e pipinstalado. Então, ao executar meu código no terminal, como sei qual kerasestá sendo importado (o pipum ou o condaoutro)?
KPMG
25

Para não confundi-lo ainda mais, mas você também pode usar o pip dentro do seu ambiente conda, que valida os comentários gerais e específicos dos gerentes python acima.

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

você também pode adicionar pip aos pacotes padrão de qualquer ambiente, para que ele esteja sempre presente, para que você não precise seguir o trecho acima.

vijay venkatesh
fonte
Eu pensei que isso não era recomendado?
endolith
8
É totalmente recomendável usar pip dentro de conda. É melhor instalar usando o conda, mas para qualquer pacote que não tenha uma configuração do conda, é perfeitamente aceitável usar o pip.
Bradley Kreider
2
nit: parece que a frase seria fully supported? fully recommendedimplica, melhor usar pip do que conda, dentro de um ambiente de condomínio, na minha opinião, e não tenho certeza de que é isso que você / eles querem dizer?
Hugh Perkins
22

Cite o artigo da Conda para Data Science no site da Continuum:

Conda vs pip

Os programadores de Python provavelmente estão familiarizados com o pip para baixar pacotes do PyPI e gerenciar seus requisitos. Embora conda e pip sejam gerenciadores de pacotes, eles são muito diferentes:

  • O Pip é específico para pacotes Python e o conda é independente da linguagem, o que significa que podemos usar o conda para gerenciar pacotes a partir de qualquer idioma.
  • O Conda cria ambientes independentes de idioma de forma nativa, enquanto o pip depende do virtualenv para gerenciar apenas ambientes Python. Embora seja recomendável sempre usar pacotes conda, o conda também inclui o pip, para que você não precise escolher entre os dois. Por exemplo, para instalar um pacote python que não possui um pacote conda, mas está disponível no pip, basta executar, por exemplo:
conda install pip
pip install gensim
CheTesta
fonte
15

Citando Conda: Mitos e Equívocos (uma descrição abrangente):

...

Mito 3: Conda e pip são concorrentes diretos

Realidade: Conda e pip servem a propósitos diferentes e apenas competem diretamente em um pequeno subconjunto de tarefas: a instalação de pacotes Python em ambientes isolados.

Pip, que está para P ip I nstalls P ackages, é gerenciador de pacotes oficialmente sancionada de Python, e é mais comumente usado para instalar pacotes publicados no Python Package Index (PyPI). O pip e o PyPI são governados e suportados pela Python Packaging Authority (PyPA).

Em resumo, o pip é um gerenciador de uso geral para pacotes Python; conda é um gerenciador de ambiente de plataforma cruzada, independente do idioma. Para o usuário, a distinção mais saliente é provavelmente a seguinte: pip instala pacotes python em qualquer ambiente; O conda instala qualquer pacote nos ambientes conda. Se tudo o que você está fazendo é instalar pacotes Python em um ambiente isolado, conda e pip + virtualenv são basicamente intercambiáveis, devido a alguma diferença no tratamento de dependências e na disponibilidade de pacotes. Por ambiente isolado, quero dizer um conda-env ou virtualenv, no qual você pode instalar pacotes sem modificar a instalação do sistema Python.

Mesmo deixando de lado o Mito 2, se focarmos apenas na instalação de pacotes Python, conda e pip atenderão a diferentes públicos e diferentes propósitos. Se você deseja, por exemplo, gerenciar pacotes Python em uma instalação existente do sistema, a conda não pode ajudá-lo: por design, ele pode instalar pacotes apenas em ambientes conda. Se você quiser, digamos, trabalhar com os muitos pacotes Python que dependem de dependências externas (NumPy, SciPy e Matplotlib são exemplos comuns), ao rastrear essas dependências de maneira significativa, o pip não pode ajudá-lo: por design, ele gerencia pacotes Python e apenas pacotes Python.

Conda e pip não são concorrentes, mas ferramentas focadas em diferentes grupos de usuários e padrões de uso.

sancho.s ReinstateMonicaCellio
fonte
1
Não tenho certeza se isso é realmente verdade, além de uma perspectiva de posicionamento no mercado. Por exemplo, olhar para pytorch, que oferece três tipos de instalação: Conda, pip, fonte, pytorch.org , e recomenda: Conda
Hugh Perkins
2
"Instalar pacotes Python em ambientes isolados" é a principal coisa para a qual os desenvolvedores de Python usam o pip.
Nick
@ Nick, não é quando o desenvolvedor já está nesse ambiente virtual? Eu acho que o pip funciona no ambiente virtual e instala o pacote como se estivesse instalando para um sistema, mas como o sanchos.s disse, ele instala apenas pacotes python e não cuida das bibliotecas subjacentes. alguém por favor me corrija se eu estiver errado.
Chan Kim
12

Para usuários do WINDOWS

A situação das ferramentas de embalagem "padrão" está melhorando recentemente:

  • no próprio pypi, agora existem 48% dos pacotes de rodas a partir de setembro. 11 de 2015 (acima de 38% em maio de 2015, 24% em setembro de 2014),

  • o formato wheel agora é suportado pronto para uso pelo python 2.7.9 mais recente,

A situação das ferramentas de embalagem "padrão" + "ajustes" também está melhorando:

  • você pode encontrar quase todos os pacotes científicos no formato wheel em http://www.lfd.uci.edu/~gohlke/pythonlibs ,

  • o projeto mingwpy pode trazer um dia um pacote de 'compilação' para os usuários do Windows, permitindo instalar tudo da fonte quando necessário.

A embalagem "Conda" permanece melhor para o mercado em que atua e destaca áreas em que o "padrão" deve melhorar.

(além disso, a especificação de dependência de esforços múltiplos, no sistema de rodas padrão e no sistema conda, ou buildout, não é muito pitônica, seria bom se todas essas técnicas básicas da embalagem pudessem convergir por meio de um tipo de PEP.

stonebig
fonte
8

pip é um gerenciador de pacotes.

conda é um gerenciador de pacotes e um gerenciador de ambiente.

Detalhe:

insira a descrição da imagem aqui

Referências

Simba
fonte
2

Posso usar o pip para instalar o iPython?

Claro, ambos (primeira abordagem na página)

pip install ipython

e (terceira abordagem, a segunda é conda)

Você pode baixar manualmente o IPython do GitHub ou PyPI. Para instalar uma dessas versões, descompacte-a e execute o seguinte no diretório de origem de nível superior usando o Terminal:

pip install .

são maneiras oficialmente recomendadas de instalar .

Por que devo usar o conda como outro gerenciador de pacotes python quando já tenho pip?

Como dito aqui :

Se você precisar de um pacote específico, talvez apenas para um projeto, ou se precisar compartilhar o projeto com outra pessoa, o conda parecerá mais apropriado.

Conda supera pip em ( YMMV )

  • projetos que usam ferramentas não-python
  • compartilhando com colegas
  • alternando entre versões
  • alternando entre projetos com diferentes versões da biblioteca

Qual é a diferença entre pip e conda?

Isso é amplamente respondido por todos os outros.

serv-inc
fonte
1

pip é apenas para Python

condaé apenas para o Anaconda + outros pacotes científicos, como dependências R, etc. Nem todo mundo precisa do Anaconda que já vem com o Python. O Anaconda é principalmente para quem faz aprendizado de máquina / aprendizado profundo etc. O desenvolvedor casual do Python não executa o Anaconda em seu laptop.

Galápagos
fonte
explicação simples, mas fui ensinado a ir diretamente ao site da Anaconda e baixar a distribuição Python 2.x ou 3.x. Por quê? > porque contém todos os pacotes que um aluno precisará. Numpy, Scipy, matpliotlib, sklearn etc. É exatamente por isso que existe uma lacuna na compreensão dos detalhes fundamentais mais refinados. Student
Rene Duchamp
Sei que essa é uma resposta antiga a essa altura, mas o que você escreveu sobre Conda / Anaconda parece completamente falso para mim.
AMC
0

Talvez eu tenha encontrado outra diferença de natureza menor. Eu tenho meus ambientes python sob /usrvez de /homeou o que quer. Para instalar nele, eu precisaria usar sudo install pip. Para mim, o efeito colateral indesejado sudo install pipfoi um pouco diferente do que o que são amplamente relatados em outros lugares: depois de fazer isso, eu tive que correr pythoncom sudo, a fim de importar qualquer um dos sudopacotes Instalada. Desisti disso e, eventualmente, descobri que poderia usar sudo condapara instalar pacotes em um ambiente no /usrqual então importava normalmente sem a necessidade de sudopermissão python. Eu até costumava sudo condaconsertar um quebrado pipao invés de usar sudo pip uninstall pipou sudo pip --upgrade install pip.

JB
fonte