2010-06-08 18 views
19

Soy nuevo en distutils .. Estoy tratando de incluir algunos archivos de datos, junto con el paquete .. Aquí está mi código ..distutils Python no incluyen data_files

from distutils.core import setup 

setup(name='Scrapper', 
     version='1.0', 
     description='Scrapper',  
     packages=['app', 'db', 'model', 'util'], 
     data_files=[('app', ['app/scrapper.db'])]  
    ) 

El archivo zip creado después de ejecutar python setup.py sdist no incluye el archivo scrapper.db. Tengo el archivo scrapper.db en el directorio de la aplicación ...

gracias por la ayuda.

+2

Una observación no relacionada con su pregunta: Le recomendaría usar un nombre de paquete de nivel superior, por ejemplo scrapper, en lugar de utilizar cuatro nombres muy utilizados para cuatro paquetes. –

+0

¿Qué versión de Python estás usando? –

Respuesta

21

Es probable que necesite agregar un archivo MANIFEST.in que contiene "include app/scrapper.db".

Es un error en distutils que lo hace necesario: cualquier cosa en data_files o package_data debe incluirse automáticamente en el MANIFEST generado. Pero en Python 2.6 y versiones anteriores, no lo es, por lo que debe incluirlo en MANIFEST.in.

El error se corrigió en Python 2.7.

+3

Todavía estoy experimentando el mismo problema con Python 2.7.1+. Encontré [este informe de error] (http://bugs.python.org/issue2279) pero no entiendo por qué el estado es 'comprometido/rechazado'. ¿Alguna orientación sobre cómo resolver sin recurrir a MANIFEST.in? ¡Gracias! – mac

+1

El estado comprometido/rechazado se usa con errores solucionados. –

1

Intenta eliminar MANIFEST, de esta forma distutils se verá obligado a regenerarlo.

Nota: He estado usando Python 3.x, así que no sé si esto funciona con 2.x o no.

+0

Has malentendido mi respuesta. No recomiendo crear un archivo MANIFEST. Estoy hablando de "MANIFEST.in", el archivo de plantilla de manifiesto. Esto le permite _agregar_ lo que está incluido en el MANIFIESTO generado automáticamente. Debido a un error en distutils en todas las versiones de Python hasta e incluyendo 2.6, las entradas data_files y package_data no se incluyen en el MANIFEST generado automáticamente a menos que las agregue a un archivo MANIFEST.in. –

+0

@Carl Meyer No estaba comentando lo que usted dijo o no dijo. Solo quería hacer referencia a una respuesta que incluía más detalles sobre esa parte (que no era mi punto principal). Y usé MANIFEST en general; Probablemente debería haber escrito MANIFEST.in (desde entonces lo he cambiado). Lo siento si tergiversé tu respuesta. – Matthew

+0

Desafortunadamente, su respuesta editada ahora es simplemente incorrecta:/distutils genera un MANIFIESTO si usted proporciona MANIFEST.in. MANIFEST.in te permite agregar contenido al archivo MANIFEST generado. –

Cuestiones relacionadas