имя 'OptionGroup' не определено - PullRequest
4 голосов
/ 14 мая 2010

Эта ошибка делается строго по следующим примерам, найденным в документации . И вы нигде не найдете никаких разъяснений, будь то эта длинная длинная страница документов , google или stackoverflow . Кроме того, чтение optparse.py показывает, что существует OptionGroup, что добавляет путаницы.

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

Могу поспорить, что кому-то понадобится менее 1 минуты, чтобы определить мою ошибку. :)

Да, это означает, что я знал ответ, но так как это заняло у меня так много времени, чтобы обнаружить, я хотел "задокументировать" его здесь.

1 Ответ

6 голосов
/ 14 мая 2010

Возможно, это другой пример того, почему лучше импортировать модули, чем функции из модулей .

OptionGroup определяется в модуле optparse. Команда

from optparse import OptionParser

помещает OptionParser в глобальное пространство имен, но полностью игнорирует OptionGroup.

Чтобы исправить код, импортируйте модуль optparse и получите доступ к его частям следующим образом:

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