在Fabric中运行OS本机命令VS Python

时间:2012-11-18 15:33:00

标签: python command fabric

我正在使用Fabric进行项目管理,部署等。我真的不了解运行命令的更方便的方法。例如,考虑到我不关心Fabric capture函数的shelllocal参数,它们是以下的优点/缺点?

os.mkdir(path)

VS

local("mkdir %s" % path)

3 个答案:

答案 0 :(得分:2)

根据项目的目标,可能稍微合适一些。以下是一些优点和缺点。

  • python标准库函数的优点
    • 跨平台兼容
    • 通常更高效,因为没有创建子进程
    • 总体上不那么复杂,因为涉及更少的模块,流程,移动部件,shell解析等(因此也更容易调试)
  • 面料的优点local
    • 在项目更改时,您可以更轻松地在localrunsudo之间切换
    • runsudo
    • 更加一致

我认为使用标准库函数可以轻松表示的简单local命令应该只使用标准库作为默认选择,因为复杂性较低。根据具体情况,我会问自己哪个更有可能:在不同的操作系统上运行此fabfile.py程序或将此命令从本地转换为远程命令,然后编码为local的调用,如果后者更有可能。

答案 1 :(得分:1)

使用OS本机命令意味着您可以将它们作为参数传递给localrun。这更加一致和灵活。

答案 2 :(得分:1)

一些好点是already mentioned,但是使用local(以及朋友)的另一个好处是,非Python人员可以更容易地看到发生了什么。