Search code examples
pythonoptparsenameerror

name 'OptionGroup' is not defined


This error is done strictly by following examples found on the docs. And you can't find any clarification about it anywhere, be it that long long docs page, google or stackoverflow. Plus, reading optparse.py shows OptionGroup is there, so that adds to the confusion.

Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
>>> from optparse import OptionParser
>>> outputGroup = OptionGroup(parser, 'Output handling')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'OptionGroup' is not defined

I bet it will take less than 1 minute for someone to spot my error. :)

Yes, that means I knew the answer, but since this took me so long to discover I wanted to "document" it here.


Solution

  • Perhaps this is another example of why it is better to import modules than functions from modules.

    OptionGroup is defined in the module optparse. The command

    from optparse import OptionParser

    puts OptionParser in the global namespace, but neglects OptionGroup entirely.

    To fix the code, import the optparse module, and access its parts like so:

    import optparse
    parser = optparse.OptionParser()
    outputGroup = optparse.OptionGroup(parser, 'Output handling')