Luigi:有没有办法从命令行将 'false' 传递给 bool 参数?

Luigi: Is there a way to pass 'false' to a bool parameter from the command line?

我有一个 Luigi 任务,其布尔参数默认设置为 True

class MyLuigiTask(luigi.Task):
    my_bool_param = luigi.BoolParameter(default=True) 

当我从终端 运行 这个任务时,我有时想将该参数作为 False 传递,但得到以下结果:

$ MyLuigiTask --my_bool_param False
error: unrecognized arguments: False  

false0 显然相同...

我知道我可以设置默认值 False 然后使用标志 --my_bool_param 如果我想设置它 True,但我更喜欢使用默认值 True

有什么方法可以做到这一点,并且仍然从终端传递 False

Luigi docs 中找到了解决方案:

class MyLuigiTask(luigi.Task):
    my_bool_param = luigi.BoolParameter(
        default=True, 
        parsing=luigi.BoolParameter.EXPLICIT_PARSING)

    def run(self):
        print(self.my_bool_param)

这里EXPLICIT_PARSING告诉Luigi在对MyLuigiTask的终端调用中加入标志--my_bool_param false,会被解析为store_false.

现在我们可以拥有:

$ MyLuigiTask --my_bool_param false
False