setuptools: forfait emplacement du dossier de données

- Je utiliser setuptools pour distribuer mon paquet python. Maintenant, j'ai besoin de distribuer des fichiers de données supplémentaires.

De ce que j'ai recueillies fromt la setuptools de la documentation, j'ai besoin d'avoir mes fichiers de données à l'intérieur du répertoire du package. Cependant, je préfère avoir mes fichiers de données à l'intérieur d'un sous-répertoire dans le répertoire racine.

Ce que je voudrais éviter:

/ #root
|- src/
|  |- mypackage/
|  |  |- data/
|  |  |  |- resource1
|  |  |  |- [...]
|  |  |- __init__.py
|  |  |- [...]
|- setup.py

Ce que je voudrais avoir:

/ #root
|- data/
|  |- resource1
|  |- [...]
|- src/
|  |- mypackage/
|  |  |- __init__.py
|  |  |- [...]
|- setup.py

Je ne me sens pas à l'aise avec le fait d'avoir autant de sous-répertoires, si ce n'est pas essentiel. Je n'arrive pas à trouver une raison, pourquoi je /avoir/pour mettre les fichiers dans le répertoire du package. Il est également lourd de travailler avec autant de imbriquée des sous-répertoires à mon humble avis. Ou est-il une bonne raison pour justifier cette restriction?

  • J'ai posé une question similaire à propos de l'utilisation de 'data_files" pour distribuer les ressources (documents, images, etc): stackoverflow.com/questions/5192386/... ...et les (deux) des réponses à la fois, a déclaré l'utilisation de 'package_data" à la place. Maintenant, je suis à l'aide de paquet de données, mais cela implique que je dois mettre mes données et les documents à l'intérieur de mon colis, c'est à dire mélangé dans mon code source. Je n'aime pas cette. Lorsque grepping ma source, je ne trouve pas juste la définition de la classe que je suis à la recherche d', mais aussi les dizaines de mentions qu'ils obtiennent à l'intérieur de mon premier, HTML et les fichiers intermédiaires. 🙁
  • Je sais que cette réponse est très tardive, @JonathanHartley , mais vous pouvez faire n'importe quel répertoire, un "ensemble" par l'ajout d'une __init__.py fichier, même si le fichier est vide. Si vous pouviez garder un répertoire de données séparée avec un vide __init__.py fichier pour qu'il ressemble à un paquet. Cela devrait garder grep dans votre arborescence des sources de les ramasser, mais il sera toujours reconnu comme un paquet par python et de ses outils de construction.
  • Une idée intéressante, merci.
  • le seul problème avec cette approche est python pense que vous avez installé un paquet appelé "data". Si un autre paquet que vous avez installés essayé de regrouper les données de la même manière, vous disposez de deux contradictoires "données" packages installés.
InformationsquelleAutor phant0m | 2010-12-23