46 votes

Quelle est la relation entre setuptools, distribution et pip?

J'ai enseigné moi-même Python à travers le livre "Apprendre le langage Python à La Dure" (2e Édition). Dans l'exercice 46 il m'a dit de lire sur le Pip, le Distribuer, et quelques autres paquets.

La documentation pour le pip a été assez clair. Il me permet d'installer/désinstaller et mettre à jour des paquets. La lecture de la documentation pour les distribuer, il semble essentiellement de faire la même chose:

Téléchargez facilement, construire, installer, mettre à jour et désinstaller les paquets Python

Quelle est la différence entre le pep et le distribuer, et comment ils se rapportent à un autre?

77voto

Ned Deily Points 40248

[2014-10 TL;DR: distribute est mort, utilisez pip, la nouvelle - setuptools, et, pour les distributions binaires, wheels. Plus ci-dessous.]


[Réponse originale à cette question]

Distribuer est est un fork de l'ancienne setuptools donc presque tous les commentaires qui suivent s'appliquent à Distribuer et setuptools. Setuptools était une tentative de remplir un certain nombre de trous dans le, même âgés Python standard library package, Distutils. Setuptools l'ajout de fonctions comme les téléchargements automatiques de paquets par l'intermédiaire d'une interface de ligne de commande, easy_install, et un certain degré de gestion de la dépendance. Cependant, un segment de la communauté Python est d'avis que setuptools est trop intrusive et a trop de derrière-le-scènes de la magie pour certaines de ses fonctionnalités.

pip est d'un plus haut niveau de l'interface sur le dessus de setuptools ou de Distribuer. Il les utilise pour effectuer de nombreuses de ses fonctions, mais évite certains de leurs plus controversées, comme zippé œufs. pip fournit également des fonctionnalités ne sont pas disponibles en setuptools, comme une commande de désinstallation et la capacité à définir fixe un ensemble d'exigences et de reproduire de manière fiable un ensemble de paquets. Il y a une plus complète des fonctionnalités de comparaison ici.

Pourquoi sont-ils si nombreux composants (et il y a plus, comme buildout)? Beaucoup de raisons: les solutions doivent travailler à travers toutes les grandes plates-formes sur lesquelles Python est pris en charge (c'est à dire Unix-y, Windows, Mac OS X), de sorte que la construction et l'installation présente d'un complexe ensemble de problèmes; comme beaucoup de projets open source, Python est essentiellement de bénévoles et de nombreux développeurs ne sont pas du tout intéressée par l'emballage et les problèmes d'installation; il y a un conservatisme naturel à propos de l'ajout des nouveaux grands prouvée fonctionnalités de la bibliothèque standard; les différences d'opinions, etc etc.

À l'heure actuelle, il y a un projet en cours pour fournir un remplacement pour Distutils et, éventuellement, de quelques de la hausse du niveau des add-ons. Il est prévu pour être publié dans le Python 3.3 de la bibliothèque standard que l' packaging paquet et comme un add-on pour les anciennes versions de Python comme Distutils2.

Pour résumer, la relation actuelle est:

pip -> [ setuptools | Distribute ] -> Distutils -> Python core
                                    |
    3rd party packages              |      included in Python
                                    |

Mise à JOUR (2012-07): Avant le code de fonction de coupure pour Python 3.3, il a été décidé qu' packaging n'était pas encore prête pour la libération de la bibliothèque standard, de sorte qu'il a été retiré de la version 3.3. Le travail se poursuivra sur Distutils2 disponible sur PyPI et sur ce qui sera inclus dans la bibliothèque standard de Python 3.4.


Mise à JOUR (2014-10): Il y a eu d'autres changements dans le monde du packaging de Python depuis cette réponse a été la dernière mise à jour.

  • Plus important encore, depuis la mi-2013, le fossé entre setuptoolset distribute a été guéris et le développement de l'activité a été fusionné dans un nouveau setuptools du projet. distribute est maintenant obsolète et n'est plus maintenu; utiliser le nouveau setuptoolsau lieu mais n'utilisez pas de son easy_install comme un programme d'installation.

  • pip est devenu de facto et béni outil d'installation (pour Python les paquets qui n'est pas autrement pourvu par votre plate-forme de package manager) soit dans ou à l'extérieur des environnements virtuels (virtualenv ou pyvenv).

  • À la place de la vieille - setuptools bdist eggs, wheelsont devenir la bienheureuse binaire format de distribution pour les paquets Python.

  • Comme de Python 3.4, une version de pip avec wheelsoutien est maintenant livré avec l'officiel python.org binaire installateurs et les paquets source et il est prévu qu' pip sera également inclus dans la prochaine version de maintenance de Python 2.7 (2.7.9).

  • Distutils2 et packaging sont désormais en sommeil.

Plus de détails dans la nouvelle Distribution des Modules Python section du Python 3 docs et le nouveau Packaging de Python Guide de l'Utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X