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
已编辑: 如果我通过 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