web-dev-qa-db-fra.com

Les projets python ont-ils besoin d'un fichier MANIFEST.in et que devrait-il contenir?)

Le guide "Python Distribute" (qui était sur python-distribute.org, mais cet enregistrement a expiré) me dit d'inclure doc/txt fichiers et .py les fichiers sont exclus dans MANIFEST.in fichier

Le documentation source me dit que sdist utilise MANIFEST.in et n'inclut que le fichier que vous spécifiez et à inclure .py des dossiers. Il me dit aussi d'utiliser: python setup.py sdist --manifest-only pour générer un MANIFEST, mais python me dit que cela n'existe pas

J'apprécie qu'il s'agisse de différentes versions de python et le système de distribution est dans un désordre complet, mais en supposant que j'utilise python 3 et setuptools (le nouveau qui inclut distribuer, mais maintenant appelé setuptools, et non les anciens outils setuptools qui étaient obsolètes pour les outils de distribution uniquement pour être ramenés en distribution et redistribués à setuptools .....)

et je suis la structure de dossiers 'standard' et setup.py fichier,

  1. Ai-je besoin d'un MANIFEST.in?
  2. Que devrait-il y avoir?
  3. Quand tous ces systèmes et méthodes de conditionnement seront-ils transformés en un processus simple et simple?
96
Neil Walker

Re: "Ai-je besoin d'un MANIFEST.in?

Non, vous n'êtes pas obligé d'utiliser MANIFEST.in. distutils et setuptools incluent tous les fichiers mentionnés dans le package de distribution source dans setup.py - modules, package python, README.txt et test/test*.py. Si c'est tout ce que vous voulez dans le paquet de distribution, vous n'êtes pas obligé d'utiliser MANIFEST.in.

Si vous voulez manipuler (ajouter ou supprimer) des fichiers par défaut à inclure, vous devez utiliser MANIFEST.in.

Re: Que devrait-il y avoir?

La procédure est simple:

  1. Assurez-vous, dans votre setup.py vous incluez (au moyen de setup arguments) tous les fichiers que vous jugez importants pour l'exécution du programme (modules, packages, scripts ...)

  2. Clarifiez s'il y a des fichiers à ajouter ou des fichiers à exclure. Si ni est nécessaire, alors il n'est pas nécessaire d'utiliser MANIFEST.in.

  3. Si MANIFEST.in est nécessaire, créez-le. D'habitude, vous ajoutez y tests*/*.py des dossiers, README.rst si vous n'utilisez pas README.txt, docs et éventuellement des fichiers de données pour la suite de tests, si nécessaire.

Par exemple:

include README.rst
include COPYING.txt

Pour le tester, lancez python setup.py sdist, et examinez l'archive créée sous dist/.

Quand tous ces systèmes de paquets différents ...

En comparant la situation d’aujourd’hui à celle d’il ya deux ans - la situation est bien meilleure - setuptools est la voie à suivre. Vous pouvez ignorer le fait que distutils est un peu cassé et constitue une base de bas niveau pour setuptools, car setuptools doit se charger de vous cacher ces informations.

[~ # ~] edit [~ # ~] : Les derniers projets que j'utilise pbr pour construire des packages de distribution à trois lignes setup.py et le repos étant en setup.cfg et requirements.txt. Pas besoin de se soucier de MANIFEST.in et autres trucs étranges. Même si le paquet mériterait un peu plus de documentation. Voir http://docs.openstack.org/developer/pbr/

96
Jan Vlcinsky

Ancienne question, nouvelle réponse:

Non, vous n'avez pas besoin de MANIFEST.in. Cependant, pour que setuptools fasse ce que vous entendez (généralement), vous devez utiliser le setuptools_scm, qui prend le rôle de MANIFEST.in dans 2 endroits clés:

  • Il s'assure que tous les fichiers pertinents sont empaquetés lors de l'exécution de la commande sdist (où tous les fichiers pertinents sont définis comme "tous les fichiers sous contrôle de source").
  • Lorsque vous utilisez include_package_data pour inclure les données du paquet dans le cadre de build ou bdist_wheel. (encore: fichiers sous contrôle de source)

La compréhension historique de MANIFEST.in est: lorsque vous n’avez pas de système de contrôle de code source, vous avez besoin d’un autre mécanisme pour distinguer les "fichiers source" des "fichiers qui se trouvent dans votre répertoire de travail". Cependant, votre projet est sous contrôle de code source (droit ??), vous n'avez donc pas besoin de MANIFEST.in. Plus d'infos dans cet article .

1
Klaas van Schelven