代码之家  ›  专栏  ›  技术社区  ›  Tomasz Zieliński

面料与透视

  •  15
  • Tomasz Zieliński  · 技术社区  · 15 年前

    我偶然发现 pexpect 我的印象是它看起来和 fabric . 我试图找到一些比较,但没有成功,所以我在这里问——以防有人对这两种工具都有经验。

    我的印象(大致相当)是正确的,还是只是表面上的样子?

    3 回复  |  直到 11 年前
        1
  •  14
  •   tshepang Arrie    14 年前

    我都用过了。 Fabric 比pexpect更高的级别,而且IMHO好多了。这取决于您使用它的目的,但是如果您使用的是软件的部署和配置,那么Fabric是正确的方法。

        2
  •  6
  •   Community Mohan Dere    9 年前

    您还可以将它们结合起来,以充分利用这两种功能:结构远程处理功能和pexpects对提示的处理。看看这些答案: https://stackoverflow.com/a/10007635/708221 和 https://stackoverflow.com/a/9614913/708221

        3
  •  5
  •   Community Mohan Dere    9 年前

    两者都有不同的用例。pexpect做的一些事情,织物并没有保存状态。每个Fabric api命令(例如:run/sudo)都是它自己的单独命令。如果你这么做了:

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

    这不会在那个目录中,也不会在virtualenv中。虽然Fabric中现在有cd()的上下文管理器,但它们或多或少都是在每次运行之前准备了一个cd。

    在计划中,这与大多数项目的工作方式几乎没有关系,而且基本上没有引起注意。但是,对于某些需要,您可以使用pexpect来管理此状态,对于多个sudo或某种不能用标志自动执行的交互任务。

    所有这些对Fabric来说都不是缺点,因为作为唯一的python,您可以在Fabric任务中包含pexpect代码。

    尽管在所有其他方面,Fabric本质上比使用pexpect从头开始编写代码更好地管理远程连接和运行命令的所有艰苦工作。

    更新 我听说有一个项目是用织物和pexespect设计的,你可以在上面看到更多 question's answer

    推荐文章