Existem vários argumentos:
Use Repositórios / PPAs, pois eles manterão você estável e atualizado com as correções de segurança.
Isto é principalmente verdade. Se, por exemplo, você instala python-django
como eu, obtém atualizações de segurança. Isso é bom porque você só precisa manter o controle do apt, mas ainda precisa testar as coisas antes de enviar atualizações (embora o teste deva ser bom todas as vezes).
Você poderia argumentar que, se você usasse pip
, nunca poderia procurar atualizações.
Use pip
para que você possa usar as versões "estáveis" apropriadas.
Não há dúvida sobre isso: os repositórios ficam para trás no mundo real. O Django é 2.0, mas os repositórios para a versão LTS do Ubuntu (que muitas pessoas aderem aos servidores), você só recebe 1.8 no Ubuntu 16.4 lts com Python 2, mas ainda recebe atualizações de segurança.
pip
fornece as últimas informações o tempo todo. Você só precisa atualizá-los.
Atualizar uma instalação Python reutilizada pode ser um pesadelo
Quando você faz o upgrade distinto do Ubuntu para a próxima versão, ele atualiza muitos pacotes. Muitas coisas mudam. Eu sei que no Django isso significa que você deve tomar cuidado com incompatibilidades de código, descontinuações ... Mas o mesmo se aplica a todos os outros códigos Python.
O mesmo vale para você, pip
mas pip
você pode fazer uma coisa de cada vez. Você sabe o que causa os problemas e sabe onde procurar a solução.
pip
+ virtualenv
permite que você mantenha as coisas separadas
virtualenv
permite que você tenha pequenos ambientes Python portáteis. Isso permite que você tenha vários ambientes Python diferentes executando juntos na mesma máquina.
O benefício óbvio parece ser a manutenção, pois você pode gerenciar o ambiente da mesma maneira que gerencia o código. Mesmo armazene 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.
Edit: Após uma série horrível de atualizações em um servidor para obtê-lo do Lucid para o Precise, eu mudei de uma combinação Apt + pip (nr 1 e 2) para uma situação pura pip + virtualenv (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, preciso aplicá-las manualmente (o que é bom porque eu as testo localmente, em um virtualenv local). Tudo isso ainda é um pouco mais doloroso do que era originalmente, mas muito melhor a longo prazo.