easy_install / pip ou apt-get

30

Comme indiqué dans la page wiki sur Rails d’Ubuntu , il est recommandé que gems gère vos dépendances Rails / Ruby.

Quelle est la meilleure pratique avec les paquets Python comme Django? Dois-je les installer via apt-get ou devrais-je laisser easy_install / pip les récupérer depuis PyPi?

    
posée Leonard Ehrenfried 11.01.2011 - 11:36
la source

2 réponses

29

Il existe plusieurs arguments:

  1. Utilisez les référentiels / PPA car ils vous permettront de rester stable et à jour avec les correctifs de sécurité.

    Ceci est surtout vrai. Si, par exemple, vous installez python-django , vous obtenez des mises à jour de sécurité. C'est bien, car il suffit de rester au fait d'apt mais vous devez toujours tester les choses avant de lancer les mises à jour (bien que les tests soient corrects à chaque fois).

    Vous pourriez dire que si vous utilisiez pip , vous ne pourriez jamais vérifier les mises à jour.

  2. Utilisez pip pour pouvoir utiliser les versions "stables" appropriées.

    Il n'y a aucun doute à ce sujet: les repos reposent sur le monde réel. Django est la version 2.0, mais le repositionnement de la version LTS d'Ubuntu (que beaucoup de personnes utilisent pour les serveurs) ne contient que 1.8 sur Ubuntu 16.4 avec Python 2, mais continue à recevoir des mises à jour de sécurité.

    pip vous donne le dernier tout le temps. Il vous suffit de les mettre à jour vous-même.

  3. La mise à jour d’une installation Python utilisée par repo peut être un cauchemar

    Lorsque vous mettez à jour Ubuntu vers la version suivante, il met à jour beaucoup de paquets. Beaucoup de choses changent. Je sais que dans Django, cela signifie que vous devez faire attention à éviter les incompatibilités de code, les dépréciations ... Mais la même chose s’applique à tous les autres codes Python.

    La même chose est vraie pour pip mais avec pip , vous devez faire une chose à la fois. Vous savez ce qui cause les problèmes afin que vous sachiez où chercher pour trouver le correctif.

  4. pip + virtualenv vous permet de garder les choses séparées

    virtualenv vous permet d'avoir de petits environnements portables Python. Cela vous permet d'avoir plusieurs environnements Python différents côte à côte sur la même machine.

    L’avantage évident semble être 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 à jour sur un serveur pour passer de Lucid à ​​Precise, je suis passé d’un Apt + pip mixte (n ° 1 et 2) à une situation pure pip + virtualenv (nr. 4) . Au lieu d'avoir une virtualenv par site, j'en ai une partagée entre une dizaine de sites. Cela fonctionne pour le moment.

J'ai également dû écrire un petit script qui vérifie le statut des paquets installés avec pip. S'il y a des mises à jour, je dois les appliquer manuellement (ce qui est bien parce que je les teste localement, dans un virtualenv local). Tout cela est encore un peu plus douloureux qu’à l’origine mais beaucoup mieux à long terme.

    
réponse donnée Oli 11.01.2011 - 12:23
la source
10
  • Packages provenant des référentiels

    Celles-ci doivent être installées chaque fois que votre application est d’une certaine manière spécifique à Ubuntu . Ils vous garantissent une version stable que vous pouvez installer sur les machines Ubuntu, ils sont supportés et parfois plus matures que ceux que vous obtenez via pip. Si vous déployez plusieurs serveurs ubuntu, ou si vous écrivez des applications Ubuntu, utilisez-les, si disponibles .

    Ils contiennent aussi parfois des modifications spécifiques à Ubuntu.

  • pip vs easy_install

    Il n’ya pas grand chose à dire à ce sujet, comme l’a dit James Bennett, le hackeur de Django:

      

    S'il vous plait, pour l'amour de Guido, arrêtez d'utiliser setuptools et easy_install, et utilisez plutôt distutils et pip.

    Pour une discussion approfondie sur les différences, consultez Sur les emballages par James Bennett (de django) et Quelques corrections à "sur l'emballage" par Ian Bicking (de mozilla).

Si vous voulez être sûr, essayez vos déploiements pip en utilisant virtualenv . Cela vous donne un environnement Python isolé, vous pouvez donc être sûr que votre application s'exécutera sur n'importe quel ordinateur.

Attends un peu, je pense que certaines personnes seront en désaccord avec moi.

    
réponse donnée Stefano Palazzo 11.01.2011 - 11:46
la source

Lire d'autres questions sur les étiquettes