ткань против pexpect - PullRequest
       19

ткань против pexpect

15 голосов
/ 17 ноября 2010

Я наткнулся на pexpect , и у меня сложилось впечатление, что он выглядит примерно как ткань . Я пытался найти какое-то сравнение, но безуспешно, поэтому я спрашиваю здесь - на случай, если у кого-то есть опыт работы с обоими инструментами.

Правильно ли мое впечатление (что они примерно эквивалентны), или это выглядит просто так?

Ответы [ 3 ]

14 голосов
/ 17 ноября 2010

Я использовал оба. Fabric - это более высокий уровень, чем pexpect, и ИМХО, намного лучше.Это зависит от того, для чего вы его используете, но если вы используете развертывание и настройку программного обеспечения, то Fabric - правильный путь.

6 голосов
/ 04 апреля 2012

Вы также можете комбинировать их, чтобы получить лучшее из обоих миров, возможностей удаленного взаимодействия тканей и возможности обработки запросов. Посмотрите на эти ответы: https://stackoverflow.com/a/10007635/708221 и https://stackoverflow.com/a/9614913/708221

5 голосов
/ 27 марта 2012

Существуют разные варианты использования для обоих.То, что pexpect делает, что не делает Fabric, - это сохранение состояния.Каждая команда api Fabric (например, run / sudo) является отдельной командой.Поэтому, если вы сделаете:

run("cd project_dir && workon project")
run("make")

Это не будет в этом каталоге и не будет в virtualenv.Хотя в Fabric теперь есть контекстные менеджеры для cd (), они более или менее предваряют каждый запуск с помощью cd.

В схеме вещей это мало влияет на работу большинства проектов, ипо существу незамеченным.Однако для некоторых нужд вы можете использовать pexpect для управления этим состоянием, для нескольких sudos или для какого-либо интерактивного задания, которое нельзя автоматизировать с помощью флагов.

Все это, хотя и не является недостатком для Fabric, поскольку, будучи только Python, вы более чем способны включать pexpect-код в задачи Fabric.

Хотя во всех других отношениях Fabricпо сути, управляет всей тяжелой работой удаленных соединений и выполнением команд лучше, чем если бы вы писали код с нуля с помощью pexpect.

Обновление Мне сообщили о проекте, который работаетс Fabric и pexepect вы можете увидеть больше об этом ответе на вопрос

...