未定义名称 'OptionGroup

4 投票
1 回答
2726 浏览
提问于 2025-04-15 22:40

这个错误是我严格按照文档中的例子来做的。但是在任何地方都找不到关于这个错误的解释,无论是那篇很长的文档,还是谷歌,或者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

也许这又是一个例子,说明为什么从模块中导入整个模块比只导入模块里的某个函数要更好。

OptionGroup 是在 optparse 这个模块里定义的。

当你使用这条命令:

from optparse import OptionParser

时,它会把 OptionParser 放到全局命名空间里,但完全忽略了 OptionGroup

要修复这个问题,你需要导入整个 optparse 模块,然后像这样访问它的部分:

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

撰写回答