Python IDLE,导入 XLRD,在调试模式下生成错误:属性错误:'_ModuleLock'对象没有属性'name'



我是Python的新手,这是我第一次尝试调试模式。

我读过stackoverflow上几乎类似问题的答案,但似乎没有一个能解决这种情况:

当我在调试模式(IDLE,Windows 10(下运行此代码时:

import xlrd
print('Hello World!')

并在print('Hello World")上设置一个断点,然后尝试遍历代码,我得到以下错误行:

> **Traceback (most recent call last):   File "D:/data/python/hello_world.py", line 4, in <module>
>     import xlrd   File "<frozen importlib._bootstrap>", line 988, in _find_and_load   File "<frozen importlib._bootstrap>", line 148, in __enter__   File "<frozen importlib._bootstrap>", line 174, in _get_module_lock   File "<frozen importlib._bootstrap>", line 59, in __init__   File "<frozen importlib._bootstrap>", line 59, in __init__   File
> "C:UsersLenovoAppDataLocalProgramsPythonPython38-32libbdb.py",
> line 88, in trace_dispatch
>     return self.dispatch_line(frame)   File "C:UsersLenovoAppDataLocalProgramsPythonPython38-32libbdb.py",
> line 112, in dispatch_line
>     self.user_line(frame)   File "C:UsersLenovoAppDataLocalProgramsPythonPython38-32libidlelibdebugger.py",
> line 24, in user_line
>     self.gui.interaction(message, frame) AttributeError: '_ModuleLock' object has no attribute 'name'**

该错误仅在调试模式下发生。当我替换pprint, datetime, sys等其他模块时,在调试模式下没有生成错误,所以我只能假设是xlrd模块在生成错误。

为什么我要使用像xlrd这样的旧模块而不是openpxl?因为我正在使用最新版本的LibreOfficeCalc创建的电子表格,Python立即通知我必须使用xlrd,并且不再赘述。

我以为我有答案,但显然没有。我将openpyxl而不是xlrd导入到helloworld代码中。同一条线上的断点出现相同错误。我本来打算说"回到绘图板上",但我想我会做其他的事情。非常令人失望!

这可能是这个问题的重复,但我还没有回答。这似乎也是两年前跟踪器问题的重复。。我最近找到了我认为是答案的东西,但还没有写补丁。需要一个简单的改变来改善这种情况,在4/22和4/23的最后3条消息中进行了讨论。在/Lib/idlelib/debugger_r.py中,第173行,在dict_item中,更改

value = repr(value)

value = reprlib.repr(value)

并在顶部添加

import reprlib

编辑:2021年1月10日:已申请更改https://bugs.python.org/issue33065并且将出现在3.8、3.9和3.10的下一个版本中。

相关内容

最新更新