Existem vários argumentos:
-
Use Repositórios / PPAs porque eles manterão você estável e atualizado com correções de segurança.
Isso é verdade principalmente. Se, por exemplo, você instalar
python-django
como eu, você receberá atualizações de segurança. Isso é bom porque você só tem que ficar por dentro do apt, mas você ainda tem que testar as coisas antes de empurrar as atualizações (embora o teste deva ficar bem a cada vez).Você pode argumentar que, se usou
pip
, talvez nunca verifique se há atualizações. -
Use
pip
para poder usar as versões "estáveis" adequadas.Não há dúvidas: os acordos estão atrás do mundo real. O Django é 2.0, mas os repositórios da versão LTS do Ubuntu (que muitas pessoas usam para servidores) você só obtém 1.8 no Ubuntu 16.4 lts com o Python 2, mas ainda recebe atualizações de segurança.
pip
oferece a você o mais recente o tempo todo. Você só precisa atualizá-los você mesmo. -
Atualizar uma instalação do Python repo usada pode ser um pesadelo
Quando você distaliza o Ubuntu para a próxima versão, ele atualiza muitos pacotes. Muitas coisas mudam. Eu sei que no Django isso significa que você tem que tomar cuidado para ficar atento a incompatibilidades de código, depreciações ... Mas o mesmo se aplica a todos os outros códigos Python.
O mesmo vale para
pip
, mas compip
você consegue fazer uma coisa de cada vez. Você sabe o que causa os problemas para saber onde procurar a correção. -
pip
+virtualenv
permite que você mantenha as coisas separadasvirtualenv
permite que você tenha pequenos ambientes Python portáteis. Isso permite que você tenha vários ambientes diferentes do Python sendo executados lado a lado na mesma máquina.O benefício óbvio parece ser para a manutenção, já que você pode gerenciar o ambiente da mesma maneira que gerencia o código. Até mesmo armazenar o ambiente no VCS também ... mas você deve se lembrar que ter doze
virtualenv
s diferentes significa doze ambientes que você precisa verificar e atualizar.
Editar: Depois de uma série horrível de atualizações em um servidor para obtê-lo de Lucid para Precise, eu mudei de um Apt + pip misto (nr 1 e 2) para uma situação de pip + virtualenv puro (nr. 4) . Em vez de ter um virtualenv por site, eu tenho um compartilhado entre uma dúzia de sites. Isso está funcionando por enquanto.
Eu também tive que escrever um pequeno script que verifica o status dos pacotes instalados com o pip. Se houver atualizações, eu tenho que aplicá-las manualmente (o que é bom porque eu as testo localmente, em um virtualenv local). Isso tudo ainda é um pouco mais doloroso do que era originalmente, mas muito melhor a longo prazo.