Spyder 在 运行 pythoncom 代码时抛出 "assert sys.modules[modname] is not old_mod"

Spyder is throwing "assert sys.modules[modname] is not old_mod" when running pythoncom code

已编辑: 如果我通过 spyder 运行 两次以下代码,第二次 运行 它会给我一个错误,第一次它总是有效的时间:

import pythoncom

if __name__ == '__main__':
    print("hallo")

这是错误:

File "C:\Users\Oliver\AppData\Local\Programs\Python\Python36-32\lib\site-packages\win32\lib\pywintypes.py", line 129, in __import_pywin32_system_module__
    assert sys.modules[modname] is not old_mod

当我重新启动内核时,它再次工作。另外,如果我 运行 直接使用 python,它总是有效。

(这里是 Spyder 维护者) 这个问题是由 Spyder 用户模块重新加载器 (UMR) 引起的,它会在我们的控制台中重新加载模块,以便可以在它们上交互地获取更改。

要修复它,您需要将 pythoncom 添加到 UMR 黑名单模块列表中,方法是:

Tools > Preferences > Python interpreter > Set UMR excluded (not reloaded) modules.

注意:如果您还想阻止我们的 UMR 在每次 运行 文件时显示重新加载的模块列表,您可以通过以下方式关闭其警告停用此选项:

Tools > Preferences > Python interpreter > Show reloaded modules list