Quais são as diferenças / semelhanças entre o gerenciamento múltiplo de pacotes python?

1

O Python parece ter vários sistemas de gerenciamento de pacotes que levam a confusões e conflitos quando usados em paralelo. Eu gostaria de algumas orientações sobre como operar com essas ferramentas para obter o melhor estado do sistema.

Aqui estão minhas perguntas:

  • Existem muitas ferramentas de instalação de pacotes quando se trata de python: apt-get, pip, easy_install, conda e a versão python3 desses. Alguém poderia explicar quando se deve usar as ferramentas específicas e o conceito dessas ferramentas funciona em conjunto? Eu até agradeceria se alguém pudesse me fornecer um link para um artigo que realmente analisa cada um desses sistemas, os compara e destaca as diferenças entre eles.
  • Instalando e executando coisas do python usando o anaconda, cuida da dor de cabeça de usar várias ferramentas de pacotes do python?
  • Se os pacotes python que o anaconda instala já estão presentes no sistema, como esses dois se coordenam quando os usamos?
por shaun 29.07.2016 / 18:04

2 respostas

2

A principal semelhança entre apt / apt-get , pip , easy_install e conda é que eles são gerenciadores de pacotes; há mais diferenças entre eles do que semelhanças.

Vamos começar com coisas fáceis primeiro. Nunca use easy_install sobre pip , e as razões para isso são eloquentemente explicadas nas várias respostas altamente votadas ao link . Em suma, easy_install é obsoleto e pip é sempre preferível.

apt / apt-get

Você usa apt ou apt-get para instalar nos pacotes Ubuntu do sistema / nível global, incluindo os do Python, encontrados nos repositórios do APT. Você precisa executar este comando com sudo . Nos repositórios do Ubuntu, os nomes para os pacotes do Python 2 são prefixados com python enquanto que para o Python 3 são prefixados com python3 , então fica claro quais pacotes você precisa instalar dependendo de qual versão do interpretador Python você pretende usar. Alguns exemplos incluem python-numpy e python3-numpy .

pip

pip significa "Pip Instala Pacotes" ou "Pip Instala o Python" , que é um acrônimo recursivo. Como o nome sugere, você usa pip para instalar os pacotes do Python somente . No nível do sistema / global, você pode instalar pip para o Python 2 usando sudo apt install python-pip e para o Python 3 usando sudo apt install python3-pip . No Ubuntu, pip install usa como padrão pip install --user . O mesmo acontece se você substituir pip por pip3 . Isso significa que os pacotes Python são instalados por padrão por usuário e não no nível do sistema / global. Isso é bom porque não há bons motivos para disponibilizar pacotes Python para todos os usuários por padrão. Você pode instalá-los globalmente executando o comando com sudo , mas como expliquei no link , isso é uma segurança risco e deve não ser feito.

A melhor maneira de gerenciar dependências do Python é usar ambientes virtuais. Um exemplo disso é o virtualenv, que pode ser instalado usando sudo apt install virtualenv . Eu escrevi uma resposta curta sobre isso no link , mas há outras respostas muito boas para a pergunta sobre a qual você pode ler.

conda

conda é um gerenciador de pacotes que também permite criar ambientes virtuais, portanto, é algo como pip + virtualenv . De acordo com o link , conda também pode "lidar com dependências de bibliotecas fora dos pacotes Python, assim como os próprios pacotes Python" . Eu pessoalmente não uso o Anaconda / Conda na minha máquina Ubuntu, pois pip e virtualenv são bons o suficiente para minhas necessidades, mas você deve definitivamente verificar conda .

    
por edwinksl 30.07.2016 / 08:31
2
  

Existem tantas ferramentas de instalação de pacotes quando se trata de python: apt-get, pip, easy_install, conda e a versão python3 desses. Alguém poderia explicar quando se deve usar as ferramentas específicas e o conceito dessas ferramentas funciona em conjunto? Eu até agradeceria se alguém pudesse me fornecer um link para um artigo que realmente analise cada um desses sistemas, compare-os e destaque as diferenças entre eles.

apt-get

Não é um gerenciador de pacotes Python, é o gerenciador de pacotes para o Ubuntu . Você o usa para instalar o software do Ubuntu.

Por que ele tem pacotes Python dentro dele, o Ubuntu empacota a maioria dos módulos do Python assim: python-modulename or python3-modulename . Esses módulos do Ubuntu Python estão desatualizados. Use pip (ou pip3 ).

pip

É o gerenciador de pacotes padrão do Python. Em caso de dúvida, use isso .

conda

É um gerenciador de pacotes Python mais um gerenciador de ambiente . Isto é, ele cria um ambiente Python isolado e fresco, permitindo que você congele módulos específicos em uma versão sem afetar o sistema Python, etc.

  

Instalando e executando o anaconda do python stuff, cuida da dor de cabeça de usar várias ferramentas de pacotes python?

Em primeiro lugar, não é uma dor de cabeça. Apenas

$ pip install modulename

(ou pip3 para o Python 3, já que 2 e 3 são extremamente incompatíveis).

Em segundo lugar, conda é outro gerenciador de pacotes para Python , que possui (acho) menos pacotes que pip e é bom apenas para congelar versões específicas de bibliotecas de sistemas, módulos Python etc. .

  

Se os pacotes python que o anaconda instala já estão presentes no sistema como esses dois se coordenam quando os usamos?

conda sobrescreve pacotes já presentes.

    
por UniversallyUniqueID 30.07.2016 / 06:16