我有一个脚本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)的参数选项。
有什么办法解决这个问题吗??
答案 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_function
和p
; p.parse_args
将不会被调用,p
本身只会在x_2
决定使用它的情况下使用。如果p
对其他模块不感兴趣,则其定义和配置也可以移至if
语句中。