instalar configuracion como archivos python setuptools

configuracion - Herramientas de configuración de Python: cómo incluir un archivo de configuración para su distribución en<prefix>/etc



como instalar configparser (1)

¿Cómo puedo escribir setup.py para que:

  1. La distribución de huevo binario ( bdist_egg ) incluye un archivo de configuración de ejemplo y
  2. Tras la instalación, colóquelo en el directorio {prefix}/etc ?

Un directorio de origen de proyecto de ejemplo tiene este aspecto:

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

El setup.py se ve así:

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)

setuptools se instala tanto en el entorno de compilación como en el entorno de instalación.

El ''include_package_data'' comentado o no no ayuda.


Estaba investigando sobre este tema y creo que la respuesta está en la documentación de setuptools: http://peak.telecommunity.com/DevCenter/setuptools#non-package-data-files

A continuación, cito el extracto que creo que tiene la respuesta:

Archivos de datos que no son paquetes

Los distritos normalmente instalan "archivos de datos" generales en una ubicación específica de la plataforma (por ejemplo, / usr / share). Esta función fue diseñada para cosas como documentación, archivos de configuración de ejemplo y similares. Sin embargo, setuptools no instala estos archivos de datos en una ubicación separada. Están agrupados dentro del archivo o directorio de egg, junto con los módulos y paquetes de Python. También se puede acceder a los archivos de datos utilizando la API de administración de recursos [...]

Tenga en cuenta, por cierto, que esta encapsulación de archivos de datos significa que realmente no puede instalar archivos de datos en una ubicación arbitraria en la máquina de un usuario ; Esto es una característica, no un error. Siempre puede incluir un script en su distribución que extraiga y copie la documentación o los archivos de datos en una ubicación especificada por el usuario, según su criterio. Si coloca los archivos de datos relacionados en un solo directorio, puede usar resource_filename () con el nombre del directorio para obtener un directorio del sistema de archivos que luego se puede copiar con el módulo shutil. [...]