繁体   English   中英

在python3上使用python调试器会引发NameError:未定义名称“ raw_input”

[英]Using python debugger on python3 throws NameError: name 'raw_input' is not defined

它改变了吗? 我只是将其用作import pdb; pdb.set_trace() 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无关

这是问题。

您正在使用1.5.1版本的noseprogressive库,该库在大约6年前就已经太旧了(我猜这是针对Python 2.7开发的2013年3月26日 )。

https://github.com/erikrose/nose-progressive/blob/1.5.1/noseprogressive/wrapping.py#L32

他们没有在将raw_input分配给变量orig_raw_input的情况下处理异常,这就是为什么使用raw_input时会出现NameError原因


但是在最新版本1.5.2 ,他们使用try and catch正确地处理了它。

https://github.com/erikrose/nose-progressive/blob/1.5.2/noseprogressive/wrapping.py#L33

尝试将noseprogressive库更新为最新版本1.5.2 ,应该没问题。

希望这可以帮助。

对于Python 3.x,请使用input()。 对于Python 2.x,请使用raw_input()。 别忘了,您可以在input()调用中添加提示字符串,以减少一条打印语句。 input(“ GUESS THAT NUMBER!”)这是文档https://docs.python.org/3/whatsnew/3.0.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM