使用PyCharm进行调试(发生在多个版本上)我无法正确查看某些列表和词典(其他列表正确显示)。
在视图窗口中,对象的名称将显示以下消息:
{list} Unable to get repr for <type 'list>
要么
{dict} Unable to get repr for <type 'dict'>
更新: 在我的一次尝试中,我从调试器收到以下消息(显示而不是列表变量之一的值):
无法显示子项:解析变量Traceback时出错(大多数 最近的呼叫最后):文件&#34; / Applications / PyCharm CE.app/Contents/helpers/pydev/_pydevd_bundle/pydevd_comm.py" ;, line 1004,在do_it中 _typeName,valDict = pydevd_vars.resolve_compound_variable(self.thread_id,self.frame_id, self.scope,self.attributes)TypeError:&#39; NoneType&#39;对象不是 可迭代
我对任何可能导致这种行为的想法表示赞赏?
谢谢!
答案 0 :(得分:3)
原来问题是由于rpyc.py的使用:我调试的进程是通过rpyc调用的,当我调试它时,调用进程在rpyc连接上收到超时。 我认为这会导致变量,通过rpc传递失去完整性,因此调试器无法正确显示它们。
解决方案是将rpyc.py降级到版本3.3.0(我在3.4.2)。 我的同事Nurit Izraelov正确地建议rpyc.py版本可能是罪魁祸首。
全部谢谢!
答案 1 :(得分:1)
您的某些自定义类可能包含错误的__repr__
或__str__
,调试器无法打印它。
您可以在此时使用shell来了解哪些元素实际位于dict
或list
内(并查看哪个对象有错误__repr__
或{{1} })。
答案 2 :(得分:1)
有时发生在我身上,导致该行为的原因是某些MyClass在其 str 方法上触发了异常。
在这种情况下,PyCharm调试器仅显示
some_object = {MyClass} Unable to get repr for <class 'my_app.models.MyClass'>
所以我要确认来源是在调试器的“监视”部分中监视repr(some_object)
。那里给了我一个明确的错误信息:
{TypeError}%d format: a number is required, not NoneType
这帮助我追溯到起源。
我很欣赏这不是一个通用的答案,而只是对法比奥的补充。
答案 3 :(得分:0)
扩展问题的范围而不是添加答案-所有其他建议都是我通常要做的以使它起作用。
可能是比赛条件吗?
对我来说,这似乎很奇怪。在“变量”窗格中,我可以看到theObject
,repr(theObject)
甚至[theObject]
的正确表示形式,但是如果我在代码中设置了a = theObject
或b = [theObject]
的变量,则我收到“无法获得
在这种情况下,theObject是用自动包装包装的子类D lang结构的实例。