Эквивалент Maven для python

Я начинающий разработчик java/python, и я пропускаю свои функции maven, в частности управление зависимостями и автоматизацию сборки (я имею в виду, что вы не создаете, но как создать пакет для развертывания?)

Существует ли эквивалент python для достижения этих возможностей?
Примечание. Я использую python 2.x

Спасибо.

Ответ 1

Python использует distutils и setuptools для зависимости и упаковки.

Вот учебник, в котором объясняются основы: http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html

Короче говоря, у вас будет файл setup.py, у которого есть зависимость и script информация о компиляции/установке, и вы можете создавать с ним яйца, архивные файлы, бинарные архивы и т.д.

Ответ 2

Прямого совпадения нет. Однако, ближайший вы можете получить:

  • zc.buildout: он может настраивать закрытые среды, загружать/обрабатывать зависимости, инициализировать скрипты и т.д. Он также основывается на плагинах (или "рецепты", как их называют). Я использовал его несколько лет назад, когда он находился в стадии бета-тестирования, вероятно, с тех пор он развился. Существует кривая обучения, как с Maven, но она также самая мощная.

Другие предложения - это подмножества Maven/zc.buildout:

  • Setuptools: создание/установка пакета
  • Pip: управление зависимостями
  • Virtualenv + virtualenvwrapper: Управление отдельными средами python (что вам не нужно с Java)

Вероятно, вы знаете Ant и shell scripting, поэтому вы также можете проверить эти инструменты Python:

  • Fabric или Paver: команда -лайн задач с добавленными вкусами. Они завершают традиционное выполнение командной строки на python и позволяют более эффективно управлять различными задачами (зависимости задач, интерпретация вывода, запуск команд на удаленном сервере и т.д.). В принципе ничего не получилось сделать с помощью сценариев оболочки, но в python это гораздо менее загадочно.

Ответ 3

Я хотел бы указать PyBuilder, который сильно вдохновлен maven, но использует конфигурацию python вместо XML, поэтому он действительно читается, IMHO.

Существует плагин для управления зависимостями (использует pip под капотом и различает зависимости между строкой и временем выполнения) и, в отличие от maven, вы можете запускать весь жизненный цикл сборки с помощью одной команды.

Ответ 4

Для развертывания, помимо distutils/setuptoos, также рассмотрите пакет pip (использует setuptools внизу). Он может откатить неудачные установки и также удалить (что-то отсутствует в easy_install/setuptools). Кроме того, вы можете указать зависимости через текстовый файл требований.

Ответ 5

Хорошо использовать virtualenv для создания автономной среды проекта и использовать pip/easy_install для зависимостей управления.