Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Архитектура системы управления пакетами в Python

Глава 14 из 1 тома книги "Архитектура приложений с открытым исходным кодом".

Оригинал: Python Packaging
Автор: Tarek Ziade
Дата публикации: 7 Июня 2012 г.
Перевод: А.Панин
Дата публикации перевода: 3 апреля 2013 г.

Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.


14.5. Подробности реализации

Реализация большинства описанных в предыдущих разделах улучшений была проведена в рамках проекта Distutils2. Файл setup.py больше не используется, а проект полностью описывается с помощью файла setup.cfg, являющегося статическим .ini-подобным файлом. Таким образом мы упростили работу лиц, осуществляющих упаковку проектов, позволив изменять ход установки проекта без вмешательства в код на языке Python. Ниже приведен пример такого файла:
[metadata]
name = MPTools
version = 0.1
author = Tarek Ziade
author-email = tarek@mozilla.com
summary = Set of tools to build Mozilla Services apps
description-file = README
home-page = http://bitbucket.org/tarek/pypi2rpm
project-url: Repository, http://hg.mozilla.org/services/server-devtools
classifier = Development Status :: 3 - Alpha
    License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)
[files]
packages =
        mopytools
        mopytools.tests

extra_files =
        setup.py
        README
        build.py
        _build.py

resources =
    etc/mopytools.cfg {confdir}/mopytools
Пакет Distutils2 использует файл конфигурации для:
  • генерации файлов метаданных META-1.2, которые могут использоваться в различных целях, таких, как регистрация проекта в каталоге PyPI.
  • выполнения любой команды управления пакетами, такой, как sdist.
  • установки проекта на основе Distutils2.

В рамках проекта Distutils2 также реализован механизм схем версий VERSION с помощью модуля version.

Реализация механизма создания списка установленных файлов INSTALL-DB будет добавлена в стандартную библиотеку Python версии 3.3 в рамках модуля pkgutil. В промежуток времени до добавления в стандартную библиотеку версия этого модуля существует в проекте Distutils2 и доступна для непосредственного использования. Предоставляемые API позволяют просматривать установки проектов и получать списки установленных файлов.

Эти API являются базисом для некоторых замечательных возможностей, предоставляемых Distutils2:
  • системы установки/удаления пакетов
  • просмотра графов зависимостей для установленных проектов

Далее: 14.6. Выученные уроки