Eu tenho tentado instalar um módulo Python que depende de setuptools e, aparentemente, o módulo foi instalado usando apt . No entanto, parece ser a versão errada, então tentei instalá-lo usando pip apenas para ver se algo muda (spoiler: nada muda - aparentemente).
Quais são as diferenças (se houver) entre os seguintes?
pip3 install setuptools
e:
apt install python3-setuptools
Nível mais alto: você nunca deve usar
pip install
para instalar no sistema (--system
, ou em distribuições Linux onde--user
não é o padrão, omitindo--user
) quando as coisas podem entrar em conflito com seu sistema, emboraapt install
seja bastante seguro.Explicação:
apt
é a ferramenta de instalação de pacotes da sua distribuição Linux. Uma distribuição Linux hoje em dia é principalmente o esforço de oferecer uma maneira de instalar pacotes de maneira que funcionem uns com os outros sem quebrar – por exemplo, se você está tentando instalar uma biblioteca que o libreoffice usa, mas em uma versão incompatível com o seu libreoffice, sua ferramenta de distribuição linux irá dizer-lhe que, infelizmente, para cumprir o seu comando, terá que desinstalar o libreoffice, porque não funcionaria com a versão que você está solicitando.O fato de que você raramente vê isso acontecer é uma indicação de quão bem as distribuições Linux modernas estão indo aqui: normalmente, a maioria dos softwares que você pode instalar
apt
funciona bem juntos.pip
, por outro lado, não tem noção de que outro software você tem em sua máquina, do qual pode precisar. Você diz ao pip para instalar algo em uma versão que interrompa sua capacidade de inicializar seu sistema - ele irá em frente e fará isso.pip
é específico do python. Ele assume que tudo o que existe naquela máquina que tem algo a ver com Python é uma espécie de "jogo justo" e pode ser tratado arbitrariamente. Francamente, quase nunca é o caso - por exemplo, no Fedora (outra distribuição Linux que você não está usando), você pode facilmente quebrar a ferramenta de instalaçãodnf
(do Fedoraapt
, se preferir) compip
.Então, por que
pip
ainda existe? Bem, há situações em que não há problema em pip assumir que cada pedaço de python que ele vê está sob seu controle: Python traz um mecanismo chamado ambientes virtuais . Neles, nenhum módulo python é instalado per se e eles não entram em conflito com outro software em sua máquina - simplesmente porque outro software não está ciente do ambiente.Usar isso é bastante simples. Você pode configurar esse ambiente usando
Isso configura uma pasta
~/bertsexperiment
para instalação do material do Python. Você pode então, de qualquer lugar que desejar, "ativar" esse ambiente (o que isso realmente faz é apenas alterar algumas variáveis de ambiente) - mas isso afeta apenas o processo atual e as coisas iniciadas a partir dele. Tente:configurará esse shell de forma que todas as ferramentas python futuras funcionem com essa pasta como "prefixo".
Por exemplo, se você quiser ter ferramentas de configuração atualizadas nesse shell, poderá, após
source
executar o script de ativação conforme mostrado acima, executarpip3 install --upgrade setuptools
, e elas serão instaladas no ambiente virtual.Resumidamente:
apt
, porque é o trabalho da sua distro manter sua pilha de software funcionando em conjuntopip
, a menos que pretenda instalar algo em uma pasta usada apenas para seu projeto atual e não por qualquer outra coisa em seu sistema.Portanto, o único momento realista em que você deseja usá-lo é quando estiver usando um virtualenv do Python.