Setuptools not passing arguments for entry_points

前端 未结 2 477
感情败类
感情败类 2021-02-14 02:05

I\'m using setuptools for a Python script I wrote

After installing, I do:

$ megazord -i input -d database -v xx-xx -w yy-yy

Like I woul

相关标签:
2条回答
  • 2021-02-14 02:30

    The setuptools console_scripts entry point wants a function of no arguments.

    Happily, optparse (Parser for command line options) doesn't need to be passed any arguments, it will read in sys.argv[1:] and use that as it's input.

    0 讨论(0)
  • 2021-02-14 02:33

    Just to give a full picture of what megazord.py would look like, using @Jeffrey Harris suggestion to use a nice library for parsing the inputs.

    import argparse
    
    def main():
        ''' Example of taking inputs for megazord bin'''
        parser = argparse.ArgumentParser(prog='my_megazord_program')
        parser.add_argument('-i', nargs='?', help='help for -i blah')
        parser.add_argument('-d', nargs='?', help='help for -d blah')
        parser.add_argument('-v', nargs='?', help='help for -v blah')
        parser.add_argument('-w', nargs='?', help='help for -w blah')
    
        args = parser.parse_args()
    
        collected_inputs = {'i': args.i,
                        'd': args.d,
                        'v': args.v,
                        'w': args.w}
        print 'got input: ', collected_inputs 
    

    And with using it like in the above, one would get

    $ megazord -i input -d database -v xx-xx -w yy-yy
    got input: {'i': 'input', 'd': 'database', 'w': 'yy-yy', 'v': 'xx-xx'}
    

    And since they are all optional arguments,

    $ megazord
    got input: {'i': None, 'd': None, 'w': None, 'v': None}
    
    0 讨论(0)
提交回复
热议问题