Библиотека сайта rus-linux.net
Архитектура системы управления пакетами в Python
Глава 14 из 1 тома книги "Архитектура приложений с открытым исходным кодом".
Оригинал: Python Packaging
Автор: Tarek Ziade
Дата публикации: 7 Июня 2012 г.
Перевод: А.Панин
Дата публикации перевода: 3 апреля 2013 г.
Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.
14.3 Современная архитектура системы управления пакетами
14.3.6. Как насчет файлов данных?
Distutils файлы данных могут быть установлены в любую директорию. Если вы зададите список файлов данных пакета в сценарии setup.py подобным образом:
setup(...,
packages=['mypkg'],
package_dir={'mypkg': 'src/mypkg'},
package_data={'mypkg': ['data/*.dat']},
)
то все файлы с расширением .dat в проекте mypkg будут включены в архив для распространения и в конечном счете установлены вместе с модулями Python с помощью системы установки.
setup(...,
data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']),
('config', ['cfg/data.cfg']),
('/etc/init.d', ['init-script'])]
)
- Файлы данных не являются частью метаданных, поэтому работающим над пакетами лицам придется исследовать файл
setup.py, а иногда и код проекта. - Разработчик не должен принимать единоличное решение о том, где будут расположены файлы данных в целевой системе.
- Для файлов данных не существует категорий: изображения, страницы руководств
manи все другие файлы обрабатываются аналогичным образом.
Человек, желающий повторно упаковать проект с такими файлами, не имеет иного пути, кроме как разработать патч для файла setup.py для того, чтобы он работал так, как требуется на данной платформе. Для этого ему придется исследовать код и заменить каждую строку, где используются эти файлы, так как разработчик задал их расположение в системе. Проекты Setuptools и Pip не улучшили эту ситуацию.
Далее: 14.4. Усовершенствованные стандарты
