I'm not sure why click is often recommended. I've used argh for years and find it easier:
def hello(name):
return "hello {}".format(name)
def ping():
return "pong"
if __name__ == "__main__":
import argh
parser = argh.ArghParser()
parser.add_commands([hello, ping])
parser.dispatch()