Comment utiliser “le programme d'installation.cfg” à la place de setup.py avec Python 2.7
Me semblait-il, qu'au lieu de l'ensemble de la pléthore de nommée mot-clé-arguments pour
le distutils.core.setup
fonction, on peut utiliser un setup.cfg
fichier dans le même répertoire
comme le setup.py
fichier et tous ces mots-clés seront lus à partir de la configuration.fichier cfg.
Je pensais que je pouvais tout simplement de créer un setup.cfg
avec Python 2.7, mais un minimum de tests
version ne fonctionne tout simplement pas. J'ai fait le test avec setup.py --name
, qui
retourne: UNKNOWN
.
Et comme d'habitude avec python-emballage de la documentation est source de confusion, comme l'enfer,
comme il n'est jamais clair, la version à laquelle ils se rapportent ou au moins l'âge de l'
la documentation est.
Mes deux fichiers de configuration:
setup.py:
from distutils.core import setup
setup()
de l'installation.cfg:
[metadata]
name = foo
version = 0.1
J'ai regardé dans le distutils paquet et que, en plus d'être moche comme l'enfer)
il semble utilisation de l'option e-mail.message_from_file
usine de lire le setup.cfg
.
Comme je suis assez ok avec un setup.py
seule approche que je ne viendrais pas beaucoup plus de temps
avec de telles absurdités, mais je suis toujours curieux de savoir comment le faire, si c'est possible.
Ni le emballage officiel doc ni la L'Emballage De L'Autorité semble être d'une grande aide ici.
Presque à chaque fois, je me sens obligé de regarder en python 2.x stdlib je me demande si ils ont
essayez de montrer comment ne pas programme. D'autre part, le C-Code semble très belle.
Vous devez vous connecter pour publier un commentaire.
Note qu'en décembre 2016 et setuptools version 30.3.0, il est possible de mettre paquet de métadonnées dans le programme d'installation.cfg, par inactif signe de réponse.
Le problème est que le de l'installation.cfg fichier n'est pas ce que vous voulez. Il ne fournit pas de paramètres pour le
setup
fonction. Il est utilisé pour fournir des paramètres pour les commandes setup.py met à la disposition des. Vous pouvez afficher la liste des commandes prises en charge avec setup.py --help-commandes. Vous devriez voir quelque chose comme:C'est la liste des articles que vous pouvez mettre dans un de l'installation.cfg fichier. Vous pouvez lister les options d'une commande prend en charge l'utilisation setup.py --help commande. Par exemple, le sdist de commande prend en charge les options suivantes:
Vous pouvez contrôler ce qui se passe lorsqu'un utilisateur exécute ./setup.py sdist dans votre projet en ajoutant un de l'installation.cfg fichier comme suit.
Donc... de l'installation.cfg simplement configure le comportement de la configuration de commandes pour votre projet. Le
setup
fonction doit vraiment avoir les métadonnées fournies en tant que paramètres de mot clé. Vous pouvez écrire votre propre version de ladistutils.dist.Distribution
classe qui tire les métadonnées à partir de de l'installation.cfg et fournir comme ledistclass=
mot-clé paramètresetup
.La pièce manquante du puzzle, c'est que la norme
Distribution
classe ne fournit pas un moyen de passer lepath
paramètre à ladistutils.dist.DistributionMetadata
initialiseur qui fait à peu près ce que vous voulez - il lit les informations de package à l'aide de l'e-mail d'analyse des trucs que vous avez mentionné. Ce que vous avez trouvé est le code qui est utilisé pour le traitement d'une PEP-314/PEP-345 fichier de métadonnées. Ce n'est pas utilisée par lesetup
fonction. Au lieu de cela, il est utilisé pour analyser les métadonnées incorporées dans un distribué des colis.distutils.core.setup
fonction.Je suis heureux de dire que, depuis setuptools 30.3.0 (8 Dec 2016) déclaratif de configuration dans de l'installation.cfg est disponible.
La Documentation.
Avertissement: Les remarques suivantes sont vraies pour python 2.7 avec le stdlib
distutils
paquet. Ils peuvent être fausses ou trompeuses pour les autres versions.Indépendamment de D. Shawleys très élaborées et sophistiquées réponse je suis venu à peu les mêmes conclusions et a décidé de faire un solution triviale pour les méta-données déclaratives.
Pour le bien de tout le monde, qui s'est coincé avec la même question et ne veut pas en perdre trop de temps sur de telles futilités voici un court résumé pour
setup.cfg
questions:setup()
utilisation desetup.cfg
ne permet pas de déclarer le nom, la version, la licence et similaires méta-données pour toutes les commandes fournies, d'une manière généralesetup()
de définir les méta-donnéessetup.cfg
sont nommés d'après des commandes et de modifier le comportement de lasetup()
fonction voir D. Shawleys répondreDonc avec ces conclusions à l'esprit j'ai mis en place un Q&D™, une solution qui permet à un
setup.cfg
-section comme:et un setup.py avec:
Fondamentalement, j'ai pris la distutils2-solution d'orientation et d'éviter le besoin de faire une importation supplémentaires, avec le chemin d'accès supplémentaire-tracas de la
setup.py
script, en utilisantexecfile
.Il y a un exemplaire gist pour les intéressés disponibles.