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

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

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

3 ответа

Решение

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

Вы также можете комбинировать их, чтобы получить лучшее из обоих миров, возможностей удаленного взаимодействия тканей и возможности обработки запросов. Посмотрите на эти ответы: /questions/1204989/kak-zastavit-fabric-avtomaticheski-a-ne-interaktivno-vzaimodejstvovat-s-komandami-obolochki-obedinit-s-pexpect/1205013#1205013 и /questions/11147353/python-fabric-kak-obrabotat-proizvolnuyu-podskazku-udalennoj-obolochki-dlya-vvoda/11147375#11147375

Есть разные варианты использования для обоих. То, что 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, вы можете увидеть больше ответов на этот вопрос

Другие вопросы по тегам