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

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 41 :
== Distutils ==
 
Aux débuts de python, jusque la version 1.5, lorsqu'on voulait partager son projet, si on voulait le rendre accessible sur Linux on créait un paquetage <code>.rpm</code>, <code>.deb</code>…, sous Windows on créait un installeur <code>.msi</code>, <code>.exe</code>. Cela demandait du temps et un niveau de compétence plus élevé que celui d'un débutant. De même l'installation diffère pour chaque projet et la mise en place de l'environnement se faisait qui avec des scripts ''shell'', qui avec des instructions à suivre à la lettre… Les plus pressés incluaient simplement leur projet dans un .zip, mais alors il fallait faire attention à ne pas y mettre des fichiers temporaires, en cache, etc. Si on voulait inclure des extensions en C il ne fallait pas oublier de les compiler avant de les inclure. Toutes ces tâches répétitives ont été automatisées par distutils.
L'arborescence du projet doit contenir un fichier setup.py, qui contient le code python nécessaire à l'installation de votre module. Cette installation, doit aboutir à la copie des fichiers nécessaires dans le répertoire site-packages le plus pertinent. Ce procédé se fait automatiquement si le fichier <code>setup.py</code> contient un appel à la fonction <code>setup()</code> de <code>distutils.core</code>. Cette fonction lit la ligne de commande utilisée pour invoquer le script puis exécute la commande appelée. <code>python ./setup.py toto --arg1=2</code> appelle la commande toto avec l'argument <code>arg1</code> valant <code>1</code>. Un fichier <code>'''setup.cfg'''</code> peut contenir des valeurs d'arguments par défaut pour chaque commande. Si il est ainsi
 
Pour la tâche de paqueter et de compiler distutils propose la commande <code>bdist</code>, et pour celle de produire une archive zip distutils propose la commande <code>sdist</code> ainsi qu'un format d'inclusion et d'exclusion de fichiers via une syntaxe de globing et un fichier MANIFEST. La tâche de l'installation est simplifiée car celle-ci passe par une commande universelle <code>'''python setup.py install'''</code>. Ce fichier setup étant en python il peut alors installer les dépendances, vérifier les prérequis, et tout ce qui demandait de la minutie et un travail manuel auparavant.
 
Pour utiliser distutils, doit contenir un fichier setup.py, qui contient le code python nécessaire à l'installation de votre module. On vera plus tard que pour automatiser cette installation il est ^référable que ce fichier se trouve à la racine de l'arborescence du projet. Cette installation, doit aboutir à la copie des fichiers nécessaires dans le répertoire site-packages le plus pertinent.
 
L'arborescenceLa du projet doit contenir un fichier setup.py, qui contient le code python nécessaire à l'installationmachinerie de votre module. Cette installation, doit aboutir à la copie des fichiers nécessaires dans le répertoire site-packages le plus pertinent. Ce procédédistutils se fait automatiquement si le fichier <code>setup.py</code>met contienten unplace appelen àappelant la fonction <code>setup()</code> de <code>distutils.core</code>. Cette fonction lit la ligne de commande utilisée pour invoquer le script puis exécute la commande appelée. <code>python ./setup.py toto --arg1=2</code> appelle la commande toto avec l'argument <code>arg1</code> valant <code>1</code>. Un fichier <code>'''setup.cfg'''</code> peut contenir des valeurs d'arguments par défaut pour chaque commande. Si il est ainsi
# setup.cfg
[toto]