Il existe deux camps complètement opposés: un en faveur des systèmes fournis par le système et un en faveur d'une installation séparée. Je suis personnellement dans le camp des "paquets système". Je vais fournir des arguments de chaque côté ci-dessous.
Paquets système Pro: le conditionneur de système se soucie déjà de la dépendance et de la conformité avec les stratégies système globales (telles que la disposition des fichiers). Les progiciels système fournissent des mises à jour de sécurité tout en ne tenant pas compte de la compatibilité, de sorte qu'ils sauvegardent parfois des correctifs de sécurité que les auteurs amont n'ont pas rétroportés. Les paquets système sont "sûrs" par rapport à. mises à jour du système: après une mise à niveau du système, vous avez probablement une nouvelle version de Python, mais tous vos modules Python sont toujours là s'ils viennent d'un gestionnaire de système. C'est une expérience personnelle avec Debian. Paquets du système Con: tous les logiciels ne peuvent pas être fournis en tant que progiciel ou pas dans la dernière version; l'installation de choses vous-même dans le système peut casser les paquets du système. Les mises à niveau peuvent casser votre application.
Installation séparée Pro: Certaines personnes (en particulier les développeurs d'applications Web) affirment que vous avez absolument besoin d'une configuration répétable, avec seulement les paquets que vous voulez, et complètement découplés du système Python. Cela va au-delà des paquets auto-installés par rapport aux paquets système, car même pour auto-installé, vous pouvez toujours modifier le système python; avec l'installation séparée, vous ne serez pas. Comme Lennart l'explique, il existe maintenant des chaînes d'outils dédiées pour supporter cette configuration. Les gens soutiennent que seule cette approche peut garantir des résultats reproductibles.
Installation séparée avec Con: vous devez vous occuper des corrections de bogues et vous devez vous assurer que tous vos utilisateurs utilisent l'installation séparée. Dans le cas des applications Web, cette dernière est généralement facile à réaliser.
[pyenv] (https://github.com/yyuu/pyenv#readme) est un outil formidable pour gérer plusieurs versions de Python et [virtualenvs] (https://github.com/yyuu/pyenv-virtualenv#readme). –