导入类也将导入argparse选项

时间:2018-12-20 21:36:39

标签: python args

我有一个脚本x_1.py,其中定义了一个Class_X类。

我正在使用的另一个脚本是x_2.py,其中有以下行:

from x_1 import Class_X

两个脚本x_1.py和x_2.py具有不同的argsparse选项。当我调用python x_1.py --h时,可以获得x_1.py的正确参数选项。当我调用python x_2.py --h时,将收到x_1.py(而不是x_2)的参数选项。

有什么办法解决这个问题吗??

1 个答案:

答案 0 :(得分:3)

最有可能的是(除非您所做的事情确实很奇怪),您想向x_1.py添加保护以保护原本要导入脚本的代码。

def some_function():
   pass

p = argparse.ArgumentParser()
p.add_argument(...)

if __name__ == "__main__":
    args = p.parse_args()
    # do some other stuff

现在,如果将x_1导入另一个模块,则将仅定义some_functionpp.parse_args将不会被调用,p本身只会在x_2决定使用它的情况下使用。如果p对其他模块不感兴趣,则其定义和配置也可以移至if语句中。