Ошибка при запуске скрипта, использующего pywinauto - PullRequest
0 голосов
/ 27 мая 2020

Всякий раз, когда я импортирую pywinauto, я получаю сообщение об ошибке «Traceback (последний вызов последним): файл« D: \ Python \ Python38 \ lib \ ctypes_init_.py », строка 123, в WINFUNCTYPE return _win_functype_cache [(restype, argtypes, flags)] KeyError: (, (,,), 0)

Во время обработки указанного выше исключения произошло другое исключение:

Traceback (последний вызов последним): File "C : /Users/tejaw/PycharmProjects/xxxxxxxx/Sample.py ", строка 3, в файле импорта pywinauto" D: \ Python \ Python38 \ lib \ site-packages \ pywinauto_init_.py ", строка 89, в from. Import findwindows File "D: \ Python \ Python38 \ lib \ site-packages \ pywinauto \ find windows .py", строка 42, в from. Import controls File "D: \ Python \ Python38 \ lib \ site-packages \ pywinauto \ controls_init_ .py ", строка 36, в from. import uiawrapper # register" uia "back-end (в конце модуля uiawrapper) Файл" D: \ Python \ Python38 \ lib \ site-packages \ pywinauto \ controls \ uiawrapper.py ", строка 47, из ..uia_defines import IUIA File" D: \ Python \ Python38 \ lib \ site-pack age \ pywinauto \ uia_defines.py ", строка 181, в pattern_ids = _build_pattern_ids_di c () файле" D: \ Python \ Python38 \ lib \ site-packages \ pywinauto \ uia_defines.py ", строка 169, в _build_pattern_ids_dic, если 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 ') Файл "D: \ Python \ Python38 \ lib \ site-packages \ comtypes \ client_generate.py", строка 110, в GetModule mod = _CreateWrapper (tlib, pathname) File "D: \ Python \ Python38 \ lib \ site -packages \ comtypes \ client_generate.py ", строка 184, в _CreateWrapper mod = _my_import (полное имя) Файл" D: \ Python \ Python38 \ lib \ site-packages \ comtypes \ client_generate.py ", строка 24, в my_import return import (полное имя, globals (), locals (), ['DUMMY']) Файл "D: \ Python \ Python38 \ lib \ site-pa ckages \ comtypes \ gen_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py ", строка 1931, в IUIAutomation.methods = [файл" D: \ Python \ Python38 \ lib \ site-packages \ comtypes_init.py ", строка 329, self_init.py», строка 329, значение self_setr (значение) "D: \ Python \ Python38 \ lib \ site-packages \ comtypes_init.py", строка 698, в make_methods prototype = WINFUNCTYPE (restype, * argtypes) File "D: \ Python \ Python38 \ lib \ ctypes_init.py", строка 125, в WINFUNCTYPE класс WinFunctionType (_CFuncPtr): TypeError: элемент 2 в argtypes передает объединение по значению, которое не поддерживается. "

Пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 29 мая 2020

Это ошибка Python в Python 2.7.6 и 3.8.1. Выполните чистую установку Python 3.7.7+ или 3.8.2+.

Полная история проблемы находится здесь: https://github.com/pywinauto/pywinauto/issues/868

Это отсутствует функция в libffi для передачи объединения по значению. libffi используется ctypes для разрешения соглашения о вызовах во время выполнения. Python Разработчики ядра решили запретить эту опцию из-за отсутствия функции. Но это было неправильное решение, которое сломало множество пользователей на Windows. Таким образом, неправильный патч был возвращен в Python 3.7.7 / 3.8.2.

...