Estou um pouco confuso sobre os casos em que os comandos acima devem ser usados ao baixar pacotes python. Eu estava tentando baixar um pacote chamado pyudev de acordo com uma resposta a esta pergunta . Eu executei este comando:
sudo pip install python-pyudev
mas recebeu a seguinte mensagem:
Downloading/unpacking python-pyudev
Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log
No entanto, o seguinte funcionou bem:
sudo apt-get install python-pyudev
Quando apt-get
deve ser usado para instalar pacotes e quando é python-pip
usado?
apt
software-installation
python
pip
Vineet Kaushik
fonte
fonte
pip
é usado para instalar apenas pacotes python, masapt-get
é usado para instalar todo o pacote any.Respostas:
PyPI é o índice do pacote Python - repositório de módulos python.
pip
é usado para baixar e instalar pacotes diretamente do PyPI. PyPI é hospedado pela Python Software Foundation . É um gerenciador de pacotes especializado que lida apenas com pacotes python.apt-get
é usado para baixar e instalar pacotes dos repositórios Ubuntu, hospedados pela Canonical.Algumas das diferenças entre a instalação de pacotes python
apt-get
epip
são as seguintes:A Canonical fornece apenas pacotes para módulos python selecionados. Enquanto o PyPI hospeda uma variedade muito mais ampla de módulos python. Portanto, existem muitos módulos python que você não poderá instalar usando
apt-get
.A Canonical hospeda apenas uma única versão de qualquer pacote (geralmente o mais recente ou o lançado recentemente). Portanto,
apt-get
não podemos decidir a versão do pacote python que queremos.pip
nos ajuda nessa situação. Podemos instalar qualquer versão do pacote que foi anteriormente carregada no PyPI. Isso é extremamente útil em caso de conflito de dependências.apt-get
instala módulos python em todo o sistema. Não podemos simplesmente instalar módulos em nosso projeto virtualenv .pip
resolve esse problema para nós. Se estiver usandopip
depois de ativar o virtualenv, é inteligente o suficiente instalar apenas os módulos em nosso projeto virtualenv. Como mencionado no ponto anterior, se já houver uma versão de um pacote python específico instalado em todo o sistema, e um de nosso projeto exigir uma versão mais antiga do mesmo pacote python, em tais situações, podemos usar virtualenv e pip para instalar essa versão mais antiga do pacote python sem nenhum conflito.Como o @Radu Rădeanu apontou nesta resposta , geralmente também haveria diferença nos nomes dos pacotes. A Canonical geralmente nomeia pacotes Python 2 como
python-<package_name>
e pacotes Python 3 comopython3-<package_name>
. Considerandopip
que, geralmente, precisamos apenas usar<package_name>
os pacotes Python 2 e Python3.Qual deles você deve usar:
Ambos
apt-get
epip
são gestores de pacotes maduros que instalam automaticamente qualquer outra dependência de pacotes durante a instalação. Você pode usar qualquer pessoa como quiser. No entanto, se você precisar instalar uma versão específica do python-package, ou instalar o pacote em um virtualenv, ou instalar um pacote hospedado apenas no PyPI; apenaspip
ajudaria a resolver esse problema. Caso contrário, se você não se importa em instalar os pacotes em todo o sistema, não importa se você usaapt-get
oupip
.fonte
pip
e simultaneamenteapt-get
.apt-get
. Como usar os doisapt-get
epip
pode causar conflitos, o conselho deve ser sempre usadopip
para pacotes suportados porpip
?sudo pip
semvirtualenv
porque a maioria dos seus projetos precisava do mesmo ambiente (mas mais extenso do que o fornecido com a instalação limpa do Ubuntu). Então, quando você faz uma atualização do sistema e o Ubuntu decide atualizar o Python para uma nova versão (comozesty
noartful
- Python 3.5 para 3.6), todos os seus pacotes instalados pelo pip/usr
são deixados para trás epip.get_installed_distributions()
produz uma lista vazia.Como o @AvinashRaj disse em seu comentário ,
pip
é usado para instalar apenas pacotes python, masapt-get
é usado para instalar pacotes criados em qualquer linguagem de programação.Seu principal problema é encontrar o nome do pacote correto nos dois casos:
lhe dará o nome certo para o pacote que você deseja instalar usando
pip install
, comofornecerá o nome certo para o pacote que você deseja instalar usando
apt-get install
:Então, em conlusão, o correspondente de
sudo apt-get install python-pyudev
ésudo pip install pyudev
, nãosudo pip install python-pyudev
.Agora depende de você o que você deseja escolher quando deseja instalar um pacote python:
pip
ouapt-get
. Veja, por exemplo, estas perguntas e respostas sobre a diferença na instalação de um pacote usandopip
eapt-get
.fonte
Minha maneira preferida é sempre usar
apt
e somente no caso de o módulo ainda não estar disponível no repositório Debian / Ubuntu para usopip
, mas apenas no contexto do usuário ---user
sinalizador. Ao usarpip
um de qualquer maneira, é necessário obter todas as dependências de compilação instaladas, digamos, o repositório do Ubuntu ou fornecê-las, o que pode ser uma tarefa tediosa.apt-get
instale pacotes binários enquanto ospip
constrói após o download. Não se deve usar pip para instalar módulos nos locais do sistema. Isso está completamente errado. Sempre use o--user
sinalizador para instalar um módulo no local inicial. O PYTHONPATH configurado corretamente permite que o python pegue os módulos primeiro no HOME e depois nos módulos do sistema instaladosapt-get
.fonte