Категории

Язык
Проект

27 января 2017 г. 12:39
О новом формате для описания зависимостей, который прочат на смену текущему.
В ноябре месяце прошлого года небезызвестный своими «библиотеками для людей» Кеннет Райтц взял в свои руки порядком запылившуюся инициативу «Requirements 2.0», положив начало проекту pipfile.

Предполагается, что pipfile будет являться идейным наследником requirements.txt, описывающим зависимости и эти зависимости можно будет установить при помощи pippip install -p.

На текущий момент новый формат отличается от действующего следующим:
  • Использование языка разметки tomlтого самого, который был упомянут и в PEP-518;
  • В одном файле можно будет указать различные группы зависимостей. Например, для разных окружений: боевое, тестовое, разработчика. Но начинаться всё будет с пары: default и development;
  • В файле можно будет указывать и другие параметры, например, такие как расположение репозитория (индекса) пакетов (сейчас его можно указать в pip.conf).

Помимо этого, pipfile служит основой для pipfile.lock, который позволит воссоздать детерминированное окружение — в нём фиксируются версии всех зависимостей без исключения (рекурсивно зависимости ваших зависимостей).

А обращали ли вы внимание, что мы присутствуем при знаковых изменениях того, что связано пакетами в Питоне?
Ведь всего четыре года назад положение в этой сфере было плачевным и Ник Когхлан, указывал на это в своём эссе «Incremental Plans to Improve Python Packaging».

Сегодня же дело явно сдвинулось с мёртвой точки: easy_install почти вытеснен pip; формат egg подвинулся, а wheel набирает популярность; пишутся и внедряются PEP по работе с пакетами и системой сборки; появляются проекты подобные pipfile.
Комитет по пакетам в Питоне (Python Packaging Authority) пристально смотрит по сторонам, не только генерируя свои идеи, но и вбирая, адаптируя идеи из проектов в других языках: см. Bundler (Ruby), Yarn (JavaScript), Composer (PHP).

Pipfile находится в стадии становления, и вы запросто можете принять участие, если интересно.

Упаковываем.