在 python3 上使用 python 调试器会抛出 NameError:未定义名称'raw_input'



它是否改变了?我只是将其用作import pdb; pdb.set_trace(),但在该行中使用了pdb,它现在投掷了:

NameError: name 'raw_input' is not defined

对于那些要求完整追溯的人:

My app traceback and then:
    if not serializer.is_valid():
  vi +48  /usr/lib/python3.5/bdb.py  # trace_dispatch
    return self.dispatch_line(frame)
  vi +66  /usr/lib/python3.5/bdb.py  # dispatch_line
    self.user_line(frame)
  vi +259 /usr/lib/python3.5/pdb.py  # user_line
    self.interaction(frame, None)
  vi +346 /usr/lib/python3.5/pdb.py  # interaction
    self._cmdloop()
  vi +319 /usr/lib/python3.5/pdb.py  # _cmdloop
    self.cmdloop()
  vi +32  /home/user/.virtualenvs/myapp/lib/python3.5/site-packages/noseprogressive/wrapping.py  # cmdloop
    orig_raw_input = raw_input
NameError: name 'raw_input' is not defined

对我来说看起来很python3.5 pdb,对2.7 pdb

这是问题。

您正在使用noseprogressive库,其中 1.5.1版本太旧了, 6 几年前( 2013年3月26日是为Python 2.7 I开发的猜测(。

https://github.com/erikrose/nose-progressivers/blob/1.5.1/noseprogrescereser/wrapping.py#l32

他们没有处理将raw_input分配给变量orig_raw_input的例外,这就是为什么您在使用raw_input

时获得 NameError

但是在最新版本1.5.2中,他们使用trycatch正确处理了它。

https://github.com/erikrose/nose-progressivers/blob/1.5.2/noseprogrescerse/wrapping.py#l33

尝试将noseprogressive库更新为最新版本,即1.5.2,应该可以。

希望这会有所帮助。

对于Python 3.x,使用输入((。对于Python 2.x,使用RAW_INPUT((。别忘了您可以在输入((调用中添加一个提示字符串,以创建一个较少的打印语句。输入("猜测这个数字!"(这是文档https://docs.python.org/3/whatsnew/3.0.html

最新更新