5 ms·
I have tried this before, and all I can say is that you should probably just use click over anything else. http://click.pocoo.org/5/ http://click.pocoo.org/5/
by devxpy 8y ago
I have tried this before, and all I can say is that you should probably just use click over anything else.
http://click.pocoo.org/5/ http://click.pocoo.org/5/
- deleted 8y ago[deleted]
- ramses0 8y agoClick makes python attractive for CLI's. It is far better than bash and perl for simple stuff. Fire looks useful for hacks but Click has been excellently intuitive for me.
- vultour 8y agoThe builtin argparse module is also really easy to use for simple stuff.
- m_ke 8y agoIt's ok but for some scripts it ends up being half of the code and you end up with a script that's dealing with an opaque args object. Here's a decent example of this https://github.com/pytorch/examples/blob/master/imagenet/main.py https://github.com/pytorch/examples/blob/master/imagenet/mai...
- heavenlyblue 8y agoCould you solve ghat with click much easier? This seems mostly related to various flags set up, which would need to exist in the code anyway.
- m_ke 8y agoI'm saying that this should really be a function like def train( data: File, arch='resnet18', workers=4, epochs=90, start_epoch=0, batch_size=256, learning_rate=0.9, momentum=1e-4, ): ... that could be exposed as a cli if __name__ is main but otherwise can be imported in a notebook or another script.
- slobotron 8y agoPerl6 has nice builtin cli construction from method definitions and doc comments cat > cli.pl6 #| Duplicates without frobnication multi sub MAIN( 'duplicate', Int $times, Str $text ) { say $text x $times; } #| Frobnicates up to a limit multi sub MAIN('frobnicate', Int :$length = 24, Bool :v(:$verbose)) { say 'Verbosity ', ($verbose ?? 'on' !! 'off'); } perl6 cli.pl Usage: cli.pl6 duplicate <times> <text> -- Duplicates without frobnication cli.pl6 [--length=<Int>] [-v|--verbose] frobnicate -- Frobnicates up to a limit perl6 cli.pl6 duplicate 3 blah... blah...blah...blah...
- noobermin 8y agoAllow me to fan the flames. I find for simple scripts, docopt[0] is more than enough. It looks like the click's docs has a discussion of the differences. [0] http://docopt.org/ http://docopt.org/
- mlrhazi 8y agoThank you for this! Wow! Just Wow!
- devxpy 8y agoI don't know man. Have used docopt, but click just feels right to me. I never have to think about the "CLI" when using click, everything "just works"... http://click.pocoo.org/5/why/#why-not-docopt-etc http://click.pocoo.org/5/why/#why-not-docopt-etc
- bede 8y agoFire is an interesting project that's great for testing and hacking. But for crafting Python CLIs from scratch, I fail to understand why Argh[0] doesn't receive more attention. My only frustrations are a missing default handler for --version, and that I can't use argument names colliding with builtins such as 'input'. All the flexibility of argparse without boilerplate. [0] https://github.com/neithere/argh https://github.com/neithere/argh