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

标签 python windows-10 spyder pywin32 pythoncom

编辑:如果我通过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 黑名单模块列表中,方法是:

工具 > 首选项 > Python 解释器 > 设置 UMR 排除(不重新加载)模块

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

工具 > 首选项 > Python 解释器 > 显示重新加载的模块列表

关于python - 运行 pythoncom 代码时,Spyder 抛出 "assert sys.modules[modname] is not old_mod",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50439165/

相关文章:

python - 为 QListWidget 中的特定项目设置不同的颜色

python - 如何将公交车进/出站记录汇总到行程中,赋予唯一ID,并剔除时间差异小的重复记录?

Powershell:将 AD MachineName/UserName/IPv4Address 导出到单个 *.csv

java - 在 Windows 10/Java 8 中将 JAVA_OPTS 参数设置为 "Override high DPI scaling behavior"

GitKraken 更改不显示——与 repo 断开连接

python - Conda 更新后打开 Spyder 的问题

python - 如何更改列表的顺序,同时保留对原始 Python 的引用

python - 使用 Python 3.x 删除文本文件中的所有空格

python - 程序类卡住/空闲,并且在 Anaconda/命令行提示符中第一次调用后不执行剩余调用,但在 Spyder 中工作

python - Q : 'UnboundLocalError' : local variable 'exitErr' referenced before assignment