Usando pip vs. MacPorts para instalar pacotes Python

12

Eu poderia instalar um pacote de python ( por exemplo , numpy) no meu Mac, quer através Macports:

port install py-numpy

ou via pip:

pip install numpy

Quais são os prós / contras gerais de cada abordagem? Quando cada abordagem deve ser usada?

  • Quando devo preferir um ao outro?
  • Importa se o pacote que estou instalando é pequeno ou grande (por exemplo numpy)?
  • Depende da versão do python que estou usando ( 2.xvs. 3.xou da Apple pythonvs. MacPort python)?
  • Importa se tenho várias versões pythoninstaladas no meu Mac?
  • Eles podem ser usados ​​simultaneamente?

Espero uma resposta que tenha uma lista curta de alguns prós / contras de cada abordagem, com alguma discussão sobre quando escolher uma sobre a outra.

jvriesem
fonte
Relacionado, mas muito específico: stackoverflow.com/questions/16895282/… . Estou pedindo pacotes python gerais em vez de apenas matplotlib.
jvriesem
AFAIK estes já estão instalados - você pode verificar o terminal:> python e o próximo comando> import numpy como np e, se não houver erros, você o terá. A solução alternativa é usar o anaconda em continuum.io/downloads - possui muitos recursos e outras instalações com o pip irão para a pasta anaconda.
Yoan
@ Yoan: numpyé apenas um exemplo. Estou perguntando sobre a instalação de pacotes em geral.
jvriesem

Respostas:

3

Eles podem ser usados ​​simultaneamente, e não deve haver problema entre misturar os dois (com uma ressalva meio grande e uma pegadinha ...)

A Advertência

A ressalva é que macports / homebrew e pip não terão conhecimento de que cada um foi instalado em relação ao outro.

Então, por exemplo, digamos que você instale o python 3.6 no seu Mac. Você deseja nltk, que não está tecnicamente disponível para essa versão no Macports, mas está no pip. Então você instala no pip. Dois meses depois, você o vê instalado no Macports e escolhe instalá-lo. Agora você tem duas versões diferentes da nltksua máquina, portanto, ressalte o emptor .

The Gotcha

Se você usa pip com Macports, precisa certificar-se de que é o pip instalado através do Macports e associado a essa versão python. Então, por exemplo, você verá um py35-pip, py36-pip, etc.

Depois de instalar o pip adequado, use o selectcomando Macports para garantir que ele seja ativado com a versão apropriada do python:

sudo port select
Rob M.
fonte
Minha experiência é que instalar módulos na área global Python criada por MacPorts causa conflitos. Mais cedo ou mais tarde, o MacPorts tentará instalar uma porta que você já instalou pelo pip. Ele emitirá uma mensagem de erro sobre a presença de um arquivo nessa porta, mas não instalado pelo MacPorts. Acho que a resposta do @ IanC é melhor: instale na área global de Python usando apenas MacPorts, instale em ambientes virtuais usando apenas pip.
Jim DeLaHunt 25/10/19
4

Você deve usá- piplo porque é a ferramenta nativa do Python para gerenciar instalações de pacotes, mas não deve instalar os itens na sua instalação básica do Python. Pode ser uma bagunça ter que resolver dependências de versão fixa entre vários repositórios de software se você estiver instalando tudo na sua instalação básica do Python na sua máquina.

Em vez disso, você deve instalar o virtualenv por pip e usá-lo para gerenciar diferentes instalações virtuais do Python e todos os pacotes de pacotes instalados pelo pip associados para cada ambiente virtual.

Isso permite que você mude de trabalhar com, por exemplo, beautifulsoup1.x em um repositório de software para beautifulsoup2.x em outro repositório sem precisar percorrer o inferno do gerenciamento de dependências.

Ian C.
fonte
0

Acabei de fazer um teste rápido procurando o mesmo pacote usando o Homebrew , MacPorts e pip3 :

brew search numpy
sudo port search --name --glob '*numpy'
pip3 search numpy

MacPorts e pip3 tinham o mesmo pacote (versão 1.18.1 ), enquanto o Homebrew tinha a versão 1.16 .

Ao colaborar com outras pessoas, é melhor concordar em como seus ambientes de desenvolvimento estão configurados ou você começará a colidir com anomalias e obter resultados de testes diferentes. Portanto, a melhor ferramenta é com a qual todos concordam ;-)

F1Linux
fonte