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

Contenu supprimé Contenu ajouté
Ligne 70 :
L'option <code>packages</code> est plus complexe à écrire, mais permet d'inclure tout type de fichier et d'utiliser une syntaxe de <code>glob</code><ref name="">https://docs.python.org/3/library/glob.html#glob.glob</ref>ing pour inclure rapidement des répertoires entiers de fichiers dans la librairie. Si on veut inclure les mêmes fichiers qu'avec <code>py_modules</code>, mais en plus un README, et des fichier en python compilés et de typage dans le répertoire a > b, on écrit
<nowiki>setup(packages=['a.b'], package_data={'': ['README'], 'a.b': ['*.pyi', '*.pyc']}</nowiki>
 
<code>packages</code> prend une liste de noms de répertoires à chercher pour y trouver des fichiers en python et les inclut automatiquement, Si on veut ajouter d'autres fichiers que des scripts en python, on doit utiliser <code>package_data</code> qui prend un dictionnaire de champs nom de package -> liste de globs à appliquer. Le champ au nom vide <code><nowiki>''</nowiki></code> s'applique à tous les packages et à la racine du projet. Le format packages n'inclut que des fichiers situés dans des packages, pour inclure le fichier toto à la racine du projet on doit utiliser py_modules, au final
<nowiki>setup(py_modules=['toto'], packages=['a.b'], package_data={'': ['README'], 'a.b': ['*.pyi', '*.pyc']}</nowiki>
# ou alors
<nowiki>setup(packages=['', 'a.b'], package_data={'': ['README'], 'a.b': ['*.pyi', '*.pyc']}</nowiki> # fonctionne aussi
On remarque que si le répertoire a>b contient un fichier README, il sera inclus aussi. Seul les règles de la racine s'appliquent à tous les sous-paquetages, si vous définissez un sous-paquetage <code>a.b.c</code>, les règles propre à <code>a.b</code> ne s'appliquent pas à <code>a.b.c</code>.
 
Si vous ne voulez pas inclure certains scripts en python, par exemple des scripts contentant des données locales dans votre paquetage, le plus simple est de les mettre dans un répertoire séparé non listé dans l'entrée <code>packages</code>, mais vous pouvez aussi utiliser <code>py_modules</code> juste pour le répertoire où ces fichiers se trouvent.
 
== Références ==