« Distribuer un projet en python » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 29 :
Dans sa forme la plus simple le fichier setup.py contient un import de la librairie setuptools, et un appel a la fonction setup() de celle-ci qui lira le contenu de la ligne de commande et exécutera les taches nécessaires à la copie de fichiers, la compilation de modules, de paquetage dans une archive, etc.
 
# from setuptoolsdistutils.core import setup # vieille façon
from setuptools import setup # nouvelle façon
setup()
 
Cet exemple introduit '''setuptools''', qui est un module tiers à python que vous devez installer au préalable via <code>python -m pip install setuptools</code> et qui est un sur-ensemble de setuptools; c'est à dire qu'il permet de faire tout ce que distutils peut faire, mais en y ajoutant la possibilité. Distutils existe depuis 1998, Setuptools depuis 2002, a été construit comme une extension à celui-ci, et de manière concurrente à zc.buildout<ref>https://www.python.org/community/sigs/current/distutils-sig/</ref>, au final setuptools a été retenu comme outil officiel au final. Ils ont la particularité d'importer la fonction setup de distutils et de l'appeler avec les même arguments qu'ils ont reçu en entrée, on peut résumer le fonctionnement de ces outils ainsi.
 
# fichier setuptools/setup.py ou zc.buildout
from distutils core import setup as distutils_setup
def setup(**args):
# traitement des arguments propre à setuptools, zc.buildout...
distutils_setup(**args)
 
De la même manière les fichiers qui executent les commandes (setup, build, sdist...) importent le fichiers de distutils et l'appellent tout en y ajoutant leurs propres fonctionnalités. ''Tout ce que l'on peut faire avec distutils, on peut le faire avec setuptools''. Si l'objectif de distutils est de produire des bundles installables à telle ou telle plateforme, celui de setuptools est assez multiple, mais principalement de produire des eggs spécifiques à python, et distribuables sans necessité de build. Mais pour bien les comprendre il faut comprendre comment distutils fonctionne et comment il est possible de l'étendre.
 
== Références ==
<references />
 
[[Catégorie:Python]]