Maven эквивалент для Python [закрыто]

146

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

Есть ли эквивалент Python для достижения этих функций?
Примечание: я использую Python 2.x

Спасибо.

Энно Сиоджи
источник

Ответы:

70

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

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

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

Даниэль Клюев
источник
6
Так как дорогой покойный Марк Пилигрим закрыл этот сайт, здесь есть зеркало в активном состоянии .
джиг
2
Я бы порекомендовал обновить это, чтобы оно указывало на Руководство пользователя по Python Packaging, поскольку оно является авторитетным руководством.
Кодзиро
38

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

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

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

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

Вы, вероятно, знаете скрипты Ant и shell, так что вы можете проверить и следующие инструменты Python:

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

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

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

user245678
источник
9

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

АРС
источник
6

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

Нин Сан
источник
7
Это печально
:)