2 técnicas para incluir archivos en una distribución de Python: ¿cuál es mejor?

Estoy trabajando en empaquetar un pequeño proyecto de Python como un archivo zip o egg para poder distribuirlo. Me he encontrado con 2 formas de incluir los archivos de configuración del proyecto, los cuales parecen producir resultados idénticos.

Método 1:

Incluya este código en setup.py:

from distutils.core import setup setup(name='ProjectName', version='1.0', packages=['somePackage'], data_files = [('config', ['config\propFiles1.ini', 'config\propFiles2.ini', 'config\propFiles3.ini'])] ) 

Método 2:

Incluya este código en setup.py:

 from distutils.core import setup setup(name='ProjectName', version='1.0', packages=['somePackage'] ) 

Luego, cree un archivo MANIFEST.in con esta línea en él:

 include config\* 

¿Hay alguna diferencia entre los métodos? ¿Cuál es la preferida? Tiendo a inclinarme hacia el primero porque entonces no es necesario ningún archivo MANIFEST.in. Sin embargo, en el primer método debe especificar cada archivo individualmente, mientras que en el segundo solo puede incluir toda la carpeta. ¿Hay algo más que deba tener en cuenta? ¿Cuál es la práctica estándar?

MANIFEST.in controla qué archivos se colocan en el archivo zip de distribución cuando llama a python setup.py sdist . No controla lo que está instalado. data_files (o mejor package_data ) controlan qué archivos están instalados (y creo que también se asegura de que los archivos estén incluidos en el archivo zip). Use MANIFEST.in para los archivos que no instalará, como la documentación, y package_data para los archivos que usa que no son código Python (como una imagen o plantilla).