如何在" local"中使用warn_only选项Python结构中的命令?

时间:2016-02-05 07:43:24

标签: fabric

使用warn_only和"运行"和" sudo"没关系。但是使用" local",它会产生以下错误:

TypeError: local() got an unexpected keyword argument 'warn_only'

我应该使用env.warn_only = True吗?

1 个答案:

答案 0 :(得分:1)

不,这就是你忘记的那种东西然后来叮咬你的屁股。如果你完全避免访问env,那么至少在你还熟悉面料时会很棒。相反,我谦卑地建议你使用with setting(warn_only=True)那样你只是暂时覆盖它。

@task
@setting(warn_only=True)
def task_that_always_throws_warning():
    local('sudo ....')
    local('sudo ....') # if this throws an error you will NOT know about it


@task
def task_that_always_throws_warning_but_i_need_to_catch_the_second_local():
    with setting(warn_only=True):
        local('sudo ....')
    local('sudo ....') # if this throws an error you will know about it

你也可以这样做,(虽然我不推荐):

env.warn_only=True

@task
def task_that_always_throws_warning_but_i_need_to_catch_the_second_local():
    local('sudo ....')
    with setting(warn_only=False):
        local('sudo ....') # if this throws an error you will know about it

最重要的是,你可以随心所欲地做到这一点," im"一个不能覆盖系统默认值的忠实粉丝。