使用OptionParser时出现'无此选项

0 投票
1 回答
5604 浏览
提问于 2025-04-18 14:02

# 补充说明:我没有选择用 --pylab 参数启动 Ipython。我安装了 python(x,y),所以这可能是问题所在?

补充说明2:我在 Windows 系统上。我是从 python(x,y) 控制台启动 IDE 的。当我直接启动 Visual Studio(我在用 PTVS)时也会出现这个问题。但当我直接启动 IDLE 并在那运行示例时,问题就不存在了。

我正在尝试运行 Python 文档中的以下代码: https://docs.python.org/2/library/optparse.html

from optparse import OptionParser
[...]
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose", default=True,
                  help="don't print status messages to stdout")

我遇到了以下错误:

In [55]: (options, args) = parser.parse_args()
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2

Usage: -c [options]

-c: error: no such option: --pylab
To exit: use 'exit', 'quit', or Ctrl-D.

我刚接触 Python,不太明白这里发生了什么。奇怪的是,错误信息提到了 pylab,这让我觉得很奇怪。我想知道是否有人遇到过类似的问题。这里是错误追踪信息,希望能帮到你:

In [56]: %tb
---------------------------------------------------------------------------
SystemExit                                Traceback (most recent call last)
<ipython-input-55-9900fd0b7216> in <module>()
----> 1 (options, args) = parser.parse_args()

C:\Python27\lib\optparse.pyc in parse_args(self, args, values)
   1399             stop = self._process_args(largs, rargs, values)
   1400         except (BadOptionError, OptionValueError), err:
-> 1401             self.error(str(err))
   1402 
   1403         args = largs + rargs

C:\Python27\lib\optparse.pyc in error(self, msg)
   1581         """
   1582         self.print_usage(sys.stderr)
-> 1583         self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
   1584 
   1585     def get_usage(self):

C:\Python27\lib\optparse.pyc in exit(self, status, msg)
   1571         if msg:
   1572             sys.stderr.write(msg)
-> 1573         sys.exit(status)
   1574 
   1575     def error(self, msg):

SystemExit: 2

1 个回答

1

OptParse 默认会从 sys.argv 读取参数。你启动 ipython 时用了一个参数 --pylab,但这个参数在你的 optparse 设置里并不存在,所以就出现了错误。

你可以给 parse_args('') 传一个空字符串,这样可以测试默认的设置。

撰写回答