【发布时间】:2020-01-27 06:35:06
【问题描述】:
我正在尝试一个接一个地执行多个@click.command()。没有一个函数期望来自另一个函数的输入。我看到的问题是主程序只执行第一个click.command() 并退出。
我已经尝试将click.command()s 分组,但它仍然做同样的事情。
@click.command('make_and_init_model')
@click.option('--use_all_gpu', default= "y", prompt='Use all available GPUs? y/n')
def make_and_init_model(use_all_gpu):
debris_model = make_unet()
if use_all_gpu == "y":
print("Identifying available GPUs")
gpus_to_use = [i for i in mx.test_utils.list_gpus()]
else:
gpus_to_use = [int(num) for num in input("Enter space separated GPU ids to use for training").split()]
print("Using GPUs :",gpus_to_use)
print("Initializing model")
model.initialize(ctx = [mx.gpu(i) for i in gpus_to_use], force_reinit=True)
print("Model initialized")
return model
@click.command('load_dataset')
@click.option('--base_dir', default = "./train", prompt ="Enter base path to training dataset")
@click.option('--use_default_dir_names', default="y", prompt= "Use default dataset directory names (img and gt)? y/n")
def load_dataset(base_dir, use_default_dir_names):
try:
base_dir_path = os.path.abspath(base_dir)
except:
print("Please check the base directory path entered. Exiting script...")
sys.exit(1)
if use_default_dir_names == "y":
image_dir_name="img"
gt_dir_name="gt"
img_format = "rgb"
ext=".tif"
else:
image_dir_name = input("Enter image directory name")
gt_dir_name = input("Enter groundtruth directory name")
img_format = input("Enter image format (ex: rgb, bgr etc)")
ext = input("Enter full image extension (ex: .tif, .jpg etc)")
train = DataSet.get_from_directory(base_dir = base_dir_path,
feature_dir = image_dir_name,
gt_dir = gt_dir_name,
image_format = img_format,
termination=ext)
print("Number of training images found :", len(train))
return train
@click.command('weights_path_and_name')
@click.option('--weights_path', default = "./weights", prompt = "Enter path to where the weights are to be saved")
@click.option('--experiment_name', default = "training_1", prompt = "Enter experiment name")
def weights_path_and_name(weights_path, experiment_name):
try:
save_weights_path = os.path.abspath(weights_path)
if not os.path.exists(save_weights_path):
os.makedirs(save_weights_path)
except:
print('Please check the save weights path entered. Exiting script')
sys.exit(1)
return save_weights_path, experiment_name
if __name__ == "__main__":
model = make_and_init_model()
train = load_dataset()
save_weights_path, experiment_name = weights_path_and_name()
但它只运行make_and_init_model 然后退出。每个单独的函数本身都是正确的,但我无法按顺序运行它们。
【问题讨论】:
标签: python click command-line-arguments python-click