¿Cómo agrega archivos adicionales a una rueda?

¿Cómo controlar qué archivos se incluyen en una rueda? ApareceMANIFEST.in no es utilizado porpython setup.py bdist_wheel.

ACTUALIZAR:

Me equivoqué acerca de la diferencia entre instalar desde una fuente tarball vs una rueda. La distribución de origen incluye archivos especificados enMANIFEST.in, pero el paquete instalado solo tiene archivos python. Se necesitan pasos para identificar archivos adicionales que se deben instalar, ya sea que la instalación se realice mediante distribución de origen, huevo o rueda. A saber,paquete_datos es necesario para archivos de paquete adicionales yarchivos de información para archivos fuera de su paquete, como scripts de línea de comandos o archivos de configuración del sistema.

Pregunta original

yo tengoun proyecto donde he estado usandopython setup.py sdist para construir mi paquete,MANIFEST.in para controlar los archivos incluidos y excluidos, ypiroma ycheck-manifest para confirmar mi configuración

Recientemente lo convertí a código dual Python 2/3, y agregué un setup.cfg con

[bdist_wheel]
universal = 1

Puedo construir una rueda conpython setup.py bdist_wheel, y parece ser una rueda universal como se desea. Sin embargo, no incluye todos los archivos especificados enMANIFEST.in.

¿Qué se instala?

Cavé más profundo, y ahora sé más sobre el embalaje y la rueda. Esto es lo que aprendí:

Subo dos archivos de paquete alproyecto multigtfs en PyPi:

multigtfs-0.4.2.tar.gz - la bola de alquitrán de origen, que incluye todos los archivos enMANIFEST.in.multigtfs-0.4.2-py2.py3-none-any.whl - La distribución binaria en cuestión.

Creé dos nuevos entornos virtuales, ambos con Python 2.7.5, e instalé cada paquete (pip install multigtfs-0.4.2.tar.gz) Los dos ambientes son casi idénticos. Tienen diferentes.pyc archivos, que son los archivos Python "compilados". Hay archivos de registro que registran las diferentes rutas en el disco. La instalación desde la bola tar de origen incluye una carpetamultigtfs-0.4.2-py27.egg-info, detallando la instalación, y la instalación de la rueda tiene unmultigtfs-0.4.2.dist-info carpeta, con los detalles de ese proceso. Sin embargo, desde el punto de vista del código que usa el proyecto multigtfs, no hay diferencia entre los dos métodos de instalación.

Explícitamente, ninguno de los archivos .zip utilizado por mi prueba, por lo que el conjunto de pruebas fallará:

$ django-admin startproject demo
$ cd demo
$ pip install psycopg2  # DB driver for PostGIS project
$ createdb demo         # Create PostgreSQL database
$ psql -d demo -c "CREATE EXTENSION postgis" # Make it a PostGIS database 
$ vi demo/settings.py   # Add multigtfs to INSTALLED_APPS,
                        # Update DATABASE to set ENGINE to django.contrib.gis.db.backends.postgis
                        # Update DATABASE to set NAME to test
$ ./manage.py test multigtfs.tests  # Run the tests
...
IOError: [Errno 2] No such file or directory: u'/Users/john/.virtualenvs/test/lib/python2.7/site-packages/multigtfs/tests/fixtures/test3.zip'
Especificar archivos adicionales

Utilizando las sugerencias de las respuestas, agregué algunas directivas adicionales parasetup.py:

from __future__ import unicode_literals
# setup.py now requires some funky binary strings
...
setup(
    name='multigtfs',
    packages=find_packages(),
    package_data={b'multigtfs': ['test/fixtures/*.zip']},
    include_package_data=True,
    ...
)

Esto instala los archivos zip (así como el archivo README) en la carpeta, y las pruebas ahora se ejecutan correctamente. Gracias por las sugerencias!

Respuestas a la pregunta(6)

Su respuesta a la pregunta