【问题标题】:Getting error while running a script which uses pywinauto运行使用 pywinauto 的脚本时出错
【发布时间】:2020-05-29 17:47:59
【问题描述】:

每当我导入 pywinauto 时,我都会遇到以下错误 " 回溯(最近一次通话最后): WINFUNCTYPE 中的文件“D:\Python\Python38\lib\ctypes_init_.py”,第 123 行 return _win_functype_cache[(restype, argtypes, flags)] KeyError: (, (, , ), 0)

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次): 文件“C:/Users/tejaw/PycharmProjects/xxxxxxxx/Sample.py”,第 3 行,在 导入pywinauto 文件“D:\Python\Python38\lib\site-packages\pywinauto_init_.py”,第 89 行,在 从 。导入查找窗口 文件“D:\Python\Python38\lib\site-packages\pywinauto\findwindows.py”,第 42 行,在 从 。进口管制 文件“D:\Python\Python38\lib\site-packages\pywinauto\controls_init_.py”,第 36 行,在 从 。 import uiawrapper # 注册“uia”后端(在 uiawrapper 模块的末尾) 文件“D:\Python\Python38\lib\site-packages\pywinauto\controls\uiawrapper.py”,第 47 行,在 从 ..uia_defines 导入 IUIA 文件“D:\Python\Python38\lib\site-packages\pywinauto\uia_defines.py”,第 181 行,在 pattern_ids = _build_pattern_ids_dic() _build_pattern_ids_dic 中的文件“D:\Python\Python38\lib\site-packages\pywinauto\uia_defines.py”,第 169 行 如果 hasattr(IUIA().ui_automation_client, cls_name): 文件“D:\Python\Python38\lib\site-packages\pywinauto\uia_defines.py”,第 50 行,调用中 cls._instances[cls] = super(_Singleton, cls).call(*args, **kwargs) 文件“D:\Python\Python38\lib\site-packages\pywinauto\uia_defines.py”,第 60 行,在 init self.UIA_dll = comtypes.client.GetModule('UIAutomationCore.dll') GetModule 中的文件“D:\Python\Python38\lib\site-packages\comtypes\client_generate.py”,第 110 行 mod = _CreateWrapper(tlib,路径名) _CreateWrapper 中的文件“D:\Python\Python38\lib\site-packages\comtypes\client_generate.py”,第 184 行 mod = _my_import(全名) 文件“D:\Python\Python38\lib\site-packages\comtypes\client_generate.py”,第 24 行,在 my_import 返回导入(全名,全局(),本地(),['DUMMY']) 文件“D:\Python\Python38\lib\site-packages\comtypes\gen_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py”,第 1931 行,在 IUIAutomation.methods = [ 文件“D:\Python\Python38\lib\site-packages\comtypes_init.py”,第 329 行,在 setattr self.make_methods(值) 文件“D:\Python\Python38\lib\site-packages\comtypes_init.py”,第 698 行,在 make_methods 原型 = WINFUNCTYPE(restype, *argtypes) WINFUNCTYPE 中的文件“D:\Python\Python38\lib\ctypes_init.py”,第 125 行 类 WinFunctionType(_CFuncPtr): TypeError:argtypes 中的第 2 项按值传递联合,这是不受支持的。 "

请帮帮我。

【问题讨论】:

  • Python 3.7.6 引入了一项更改,这导致了多个联合问题。这在 3.8.2 中被恢复。你可以阅读更多关于它的信息here。您能否验证您正在运行的版本?

标签: python-3.x windows automation pywinauto


【解决方案1】:

这是 Python 2.7.6 和 3.8.1 中的 Python 错误。请干净安装 Python 3.7.7+ 或 3.8.2+。

问题的完整历史记录在这里:https://github.com/pywinauto/pywinauto/issues/868

这是 libffi 中缺少的按值传递联合的功能。 ctypes 使用 libffi 在运行时解析调用约定。由于缺少功能,Python Core 开发人员决定禁止此选项。但这是一个错误的决定,让 Windows 上的很多用户都崩溃了。所以错误的补丁在 Python 3.7.7 / 3.8.2 中被恢复了。

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多