Библиотека сайта 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. Усовершенствованные стандарты