【发布时间】:2010-11-16 23:56:30
【问题描述】:
我偶然发现了pexpect,我的印象是它看起来与fabric 大致相似。我试图找到一些比较,但没有成功,所以我在这里问——以防有人对这两种工具都有经验。
我的印象(它们大致相当)是正确的,还是只是表面上的样子?
【问题讨论】:
我偶然发现了pexpect,我的印象是它看起来与fabric 大致相似。我试图找到一些比较,但没有成功,所以我在这里问——以防有人对这两种工具都有经验。
我的印象(它们大致相当)是正确的,还是只是表面上的样子?
【问题讨论】:
我都用过。 Fabric 比 pexpect 级别更高,恕我直言,要好得多。这取决于您使用它的目的,但如果您的用途是部署和配置软件,那么 Fabric 是正确的选择。
【讨论】:
您还可以将它们结合起来,以获得两全其美的效果,即织物远程处理功能和对提示的预期处理。看看这些答案:https://stackoverflow.com/a/10007635/708221 和 https://stackoverflow.com/a/9614913/708221
【讨论】:
两者都有不同的用例。 Fabric 没有做到的事情是保持状态。每个 Fabric api 命令(例如:run/sudo)都是它自己的单独命令。所以如果你这样做:
run("cd project_dir && workon project")
run("make")
它不会在那个目录中,也不会在 virtualenv 中。虽然现在 Fabric 中有 cd() 的上下文管理器,但它们或多或少地在每次运行之前都添加了 cd。
在事物的计划中,这与大多数项目的工作方式几乎没有关系,并且基本上没有被注意到。但是,对于某些需求,您可能会使用 pexpect 来管理此状态,用于多个 sudo 或某种无法使用标志自动执行的交互式任务。
所有这一切都不是 Fabric 的缺点,因为它只是 python,你完全可以在 Fabric 任务中包含 pexpect 代码。
尽管在所有其他方面,Fabric 基本上管理远程连接和运行命令的所有繁重工作,比使用 pexpect 从头开始编写代码更好。
更新我得知有一个项目可以使用 Fabric 和 pexepect,您可以在 question's answer 上查看更多信息
【讨论】: