Il y a plusieurs arguments:
Utilisez des référentiels / PPA car ils vous garderont à la fois stables et à jour avec des correctifs de sécurité.
C'est surtout vrai. Si, par exemple, vous installez python-django
comme moi, vous obtenez des mises à jour de sécurité. C'est bien parce que vous n'avez qu'à garder le dessus sur apt mais vous devez toujours tester les choses avant de pousser les mises à jour (bien que les tests devraient être bien à chaque fois).
Vous pourriez faire valoir que si vous l'utilisiez pip
, vous ne vérifieriez peut-être jamais les mises à jour.
Utilisez-le pip
pour pouvoir utiliser les versions "stables" appropriées.
Cela ne fait aucun doute: le repos est en retard sur le monde réel. Django est 2.0 mais le référentiel pour la version LTS d'Ubuntu (que beaucoup de gens utilisent pour les serveurs) vous n'obtenez que 1.8 sur Ubuntu 16.4 lts avec Python 2 mais obtenez toujours des mises à jour de sécurité.
pip
vous donne le dernier tout le temps. Il vous suffit de les mettre à jour vous-même.
La mise à niveau d'une installation Python utilisée par un dépôt peut être un cauchemar
Lorsque vous mettez à niveau Ubuntu vers la prochaine version, il met à niveau un grand nombre de packages. Beaucoup de choses changent. Je sais que dans Django, cela signifie que vous devez faire attention aux incompatibilités de code, aux dépréciations ... Mais la même chose s'applique à tous les autres codes Python.
La même chose est vraie, pip
mais avec pip
vous, vous pouvez faire une chose à la fois. Vous savez ce qui cause les problèmes et vous savez où chercher pour trouver le correctif.
pip
+ virtualenv
vous permet de garder les choses séparées
virtualenv
vous permet d'avoir de petits environnements Python portables. Cela vous permet d'avoir plusieurs environnements Python différents fonctionnant côte à côte sur la même machine.
L'avantage évident semble être pour la maintenance car vous pouvez gérer l'environnement de la même manière que vous gérez le code. Même stocker l'environnement dans le VCS aussi ... mais vous devez vous rappeler qu'avoir douze virtualenv
s différents signifie douze environnements que vous devez vérifier et mettre à jour.
Edit: Après une horrible série de mises à niveau sur un serveur pour passer de Lucid à Precise, je suis passé d'une situation mixte Apt + pip (n ° 1 et 2) à une situation pure pip + virtualenv (n ° 4). Au lieu d'avoir un virtualenv par site, j'en ai un partagé entre une douzaine de sites. Cela fonctionne pour l'instant.
J'ai également dû écrire un petit script qui vérifie l'état des packages installés avec pip. S'il y a des mises à jour, je dois les appliquer manuellement (ce qui est bien car je les teste localement, dans un virtualenv local). Tout cela est encore un peu plus douloureux qu'il ne l'était à l'origine mais beaucoup mieux à long terme.