PyCharm调试器不显示对象的内容:“无法获取〈type 'list>的复制”

nxowjjhe  于 2023-03-12  发布在  PyCharm
关注(0)|答案(5)|浏览(254)

使用PyCharm调试(在多个版本中发生)我无法正确查看一些列表和字典(其他列表和字典显示正确)。在视图窗口中,对象的名称显示为以下消息:{list} Unable to get repr for <type 'list>{dict} Unable to get repr for <type 'dict'>
更新:在我的一次尝试中,我从调试器收到了以下消息(显示的不是列表变量之一的值):
无法显示子级:解析变量时出错Traceback(最近的调用最后一个):文件“/应用程序/PyCharmCE.app/Contents/helpers/pydev/_pydevd_bundle/pydevd_comm.py“,第1004行,在do_it _typeName中,valDict = pydevd_vars.resolve_compound_variable(自定义线程ID、自定义帧ID、自定义作用域、自定义属性)类型错误:“NoneType”对象不可迭代
我很想知道是什么导致了这种行为?
谢谢!

o4tp2gmn

o4tp2gmn1#

结果发现问题是由于使用rpyc.py:我调试的进程是通过rpyc调用的,当我调试它时,调用进程收到了rpyc连接的超时。我认为这导致了通过rpc传递的变量失去完整性,因此调试器无法正确显示它们。
解决方案是将www.example.com降级rpyc.py到3.3.0版本(我在3.4.2版本),我的同事Nurit Izraelov正确地提出rpyc.py版本可能是罪魁祸首。
谢谢大家!

qeeaahzv

qeeaahzv2#

我有时会遇到这种情况,导致这种行为的原因是某个MyClass在其str方法上触发了异常。
在这种情况下,PyCharm调试器只显示
some_object = {MyClass} Unable to get repr for <class 'my_app.models.MyClass'>
所以,我在调试器的Watches部分观察repr(some_object),确认了它的来源,它给了我一个明确的错误信息:
{TypeError}%d format: a number is required, not NoneType
帮我找到了源头。
我知道这不是一个通用的答案,而只是对法比奥的补充。

iq3niunx

iq3niunx3#

可能是您的某个自定义类中有错误的__repr____str__,调试器无法打印它。
此时,您可能可以使用shell来了解哪些元素实际上位于dictlist中(并查看哪个对象具有错误的__repr____str__)。

7vhp5slm

7vhp5slm4#

扩大问题的范围而不是增加一个答案-所有其他的建议都是我通常为让这个工作所做的。
会不会是争用条件?
对我来说,这看起来很奇怪。在变量窗格中,我可以看到theObjectrepr(theObject),甚至[theObject]的正确表示,但如果我在代码中设置一个变量a = theObjectb = [theObject],那么我会得到“无法获取〈class 'list'〉的repr”的消息。
本例中的theObject是一个使用autowrap Package 的子类化D lang结构体的示例。

pod7payv

pod7payv5#

对我来说,问题是__repr__返回的是一个字符串,而PyCharm期望的是一个字符串。
因此,我将repr方法修改为:

def __repr__(self):
      return str({
        'id': self.id,
        'email': self.email,
        'name': self.name
      })

这消除了“无法获取......的复制”错误

相关问题