Python a une histoire confusion des outils qui peuvent être utilisés pour emballer et décrire les projets: ceux - ci sont distutilsdans la bibliothèque standard, distribute, distutils2et setuptools(et peut - être plus). Il semble que distributeet distutils2ont été abandonnés en faveur de setuptools, ce qui laisse deux normes concurrentes.
À ma connaissance, il setuptoolsoffre beaucoup plus d'options (par exemple, déclarer des dépendances, des tests, etc.) que distutils, cependant, il n'est pas inclus dans la bibliothèque standard Python (encore?).
Le guide de l'utilisateur de Python Packaging [ 1 ] recommande maintenant:
Permet
setuptoolsde définir des projets et de créer des distributions source.
Et explique:
Bien que vous puissiez utiliser pure
distutilspour de nombreux projets, il ne prend pas en charge la définition de dépendances sur d’autres projets et il manque plusieurs utilitaires pratiques permettant de remplir automatiquement correctement les métadonnées de package fournies parsetuptools. En dehors de la bibliothèque standard, setuptools offre également un ensemble de fonctionnalités plus cohérent dans différentes versions de Python, et (contrairement àdistutils),setuptoolssera mis à jour pour produire les prochains formats standard «Metadata 2.0» sur toutes les versions prises en charge.Même pour les projets qui choisissent d'utiliser
distutils, lorsque pip installe ces projets directement à partir de la source (plutôt que d'installer à partir d'un fichier de roue prédéfini), il construira en fait votre projet à lasetuptoolsplace.
Cependant, l' examen des fichiers setup.py de divers projets révèle que cela ne semble pas être une norme réelle. De nombreux packages utilisent encore distutilset ceux qui prennent en charge setuptoolsse mélangent souvent setuptoolsavec, distutilspar exemple en effectuant une importation de secours:
try:
    from setuptools import setup
except ImportError:
    from distutils.core import setupSuivi d'une tentative pour trouver un moyen d'écrire une configuration pouvant être installée à la fois par setuptoolset distutils. Cela inclut souvent diverses méthodes de vérification des dépendances sujettes aux erreurs, car distutilsne prend pas en charge les dépendances dans la fonction de configuration.
Pourquoi les gens font-ils encore des efforts supplémentaires pour soutenir distutils- le fait que ce setuptoolsne soit pas dans la bibliothèque standard est-il la seule raison? Quels sont les avantages distutilset y a-t-il des inconvénients à écrire des fichiers setup.py qui ne prennent en charge que setuptools.
setuptoolsest une alternative améliorée à distutilsmais notez que " Le programme d' installation pip recommandé exécute tous les scripts setup.py avec setuptools, même si le script lui-même importe uniquementdistutils " ( source )
                
distutilsa été fusionné danssetuptools, mais il existe des applications héritées qui ont été écrites pour être utiliséesdistutilset la migration vers les normes appropriées entraîne des coûts.