Как добавить дополнительные файлы в колесо?

Как контролировать, какие файлы включены в колесо? КажетсяMANIFEST.in не используетсяpython setup.py bdist_wheel.

ОБНОВИТЬ:

Я был не прав относительно разницы между установкой из исходного архива против колеса. Исходный дистрибутив включает файлы, указанные вMANIFEST.in, но установленный пакет имеет только файлы Python. Шаги необходимы для определения дополнительных файлов, которые должны быть установлены, независимо от того, происходит ли установка через исходный дистрибутив, яйцо или колесо. А именно,package_data необходим для дополнительных файлов пакета, иДата файлы для файлов вне вашего пакета, таких как сценарии командной строки или файлы конфигурации системы.

Оригинальный вопрос

я имеюпроект где я использовалpython setup.py sdist построить мой пакет,MANIFEST.in контролировать файлы, включенные и исключенные, иpyroma а такжечек-манифест подтвердить мои настройки.

Недавно я преобразовал его в двойной код Python 2/3 и добавил файл setup.cfg с

[bdist_wheel]
universal = 1

Я могу построить колесо сpython setup.py bdist_wheelи, кажется, это универсальное колесо по желанию. Тем не менее, он не включает в себя все файлы, указанные вMANIFEST.in.

Что устанавливается?

Я копал глубже, и теперь знаю больше об упаковке и колесе. Вот что я узнал:

Я загружаю два файла пакета впроект multigtfs на PyPi:

multigtfs-0.4.2.tar.gz - исходный tar-шар, который включает в себя все файлы вMANIFEST.in.multigtfs-0.4.2-py2.py3-none-any.whl - Бинарное распределение в вопросе.

Я создал две новые виртуальные среды, обе с Python 2.7.5, и установил каждый пакет (pip install multigtfs-0.4.2.tar.gz). Две среды практически идентичны. У них разные.pyc файлы, которые являются "скомпилированными" файлами Python. Есть файлы журналов, которые записывают различные пути на диске. Установка из исходного tar-шара включает в себя папкуmultigtfs-0.4.2-py27.egg-info, детализация установки, а колесо установки имеетmultigtfs-0.4.2.dist-info папка, с деталями этого процесса. Однако с точки зрения кода, использующего проект multigtfs, нет никакой разницы между этими двумя методами установки.

Ясно, что ни один из файлов .zip не использовался в моем тесте, поэтому набор тестов завершится неудачно:

$ 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'
Указание дополнительных файлов

Используя предложения из ответов, я добавил несколько дополнительных директивsetup.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,
    ...
)

Это установит zip-файлы (а также README) в папку, и тесты теперь будут выполняться правильно. Спасибо за предложения!

Ответы на вопрос(6)

Ваш ответ на вопрос