Python setuptools: comment inclure un fichier de configuration pour la distribution dans /etc

Comment puis-je écrire setup.py donc:

  1. la distribution binaire des oeufs (bdist_egg) contient un exemple de fichier de configuration et
  2. après l'installation le met dans le {prefix}/etc répertoire?

Un exemple de projet source répertoire ressemble à ceci:

bin/
   myapp
etc/
   myapp.cfg
myapp/
    __init__.py
    [...]
setup.py

La setup.py ressemble à ceci:

from distutils.command.install_data import install_data

packages = ['myapp', ]
scripts = ['bin/myapp',]
cmdclasses = {'install_data': install_data}
data_files = [('etc', ['etc/myapp.cfg'])]

setup_args = {
    'name': 'MyApp',
    'version': '0.1',
    'packages': packages,
    'cmdclass': cmdclasses,
    'data_files': data_files,
    'scripts': scripts,
#    'include_package_data': True,
    'test_suite': 'nose.collector'
}

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

setup(**setup_args)

les outils setuptools sont installés à la fois dans l'environnement de construction et dans l'environnement d'installation.

le 'include_package_data' commenté ou non n'aide pas.

29
demandé sur Michael Currie 2012-05-05 01:20:39

1 réponses

j'ai été faire quelques recherches sur cette question et je pense que la réponse est dans la setuptools de la documentation: http://peak.telecommunity.com/DevCenter/setuptools#non-package-data-files

Ensuite, je cite l'extrait que je pense a la réponse:

Non-Paquet De Fichiers De Données

les distutils installent normalement des "fichiers de données" généraux à un emplacement spécifique à la plate-forme (par exemple /usr/share). Cette fonctionnalité vise à être utilisé pour des choses comme documentation,exemples de fichiers de configuration, et la comme. setuptools n'installe pas ces fichiers de données dans un emplacement distinct, cependant. Ils sont empaquetés dans le fichier egg ou répertoire, à côté des modules et des paquets Python. Les fichiers de données peut également être consulté en utilisant L'API de gestion des ressources [...]

Noter, en passant, que cette encapsulation de fichiers de données signifie que vous ne peut pas installer des fichiers de données à un endroit arbitraire sur un l'ordinateur de l'utilisateur; c'est une fonction, pas un bug. Vous pouvez toujours inclure un script dans votre distribution qui extrait et copie votre la documentation ou les fichiers de données à un emplacement spécifié par l'utilisateur, à leur discrétion. Si vous mettez des fichiers de données connexes dans un seul répertoire, vous pouvez utiliser resource_filename() avec le nom du répertoire pour obtenir un répertoire du système de fichiers qui peut ensuite être copié avec le module shutil. [...]

13
répondu Akhorus 2012-11-20 15:33:28