Эквивалент 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:
Вероятно, вы знаете 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 для зависимостей управления.