Как добавить дополнительные файлы в колесо?
Как контролировать, какие файлы включены в колесо? Кажется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) в папку, и тесты теперь будут выполняться правильно. Спасибо за предложения!