파이썬 pywinauto패키지 사용법과 관련하여 질문 드립니다.
조회수 2985회
Traceback (most recent call last):
File "C:\Anaconda3\lib\ctypes\__init__.py", line 121, in WINFUNCTYPE
return _win_functype_cache[(restype, argtypes, flags)]
KeyError: (<class 'ctypes.HRESULT'>, (<class 'ctypes.c_long'>, <class 'comtypes.automation.tagVARIANT'>, <class 'ctypes.c_long'>, <class 'comtypes.LP_POINTER(IUIAutomationTextRange)'>), 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/parkk/PycharmProjects/untitled1/openapi.py", line 1, in <module>
from pywinauto import application
File "C:\Anaconda3\lib\site-packages\pywinauto\__init__.py", line 89, in <module>
from . import findwindows
File "C:\Anaconda3\lib\site-packages\pywinauto\findwindows.py", line 42, in <module>
from . import controls
File "C:\Anaconda3\lib\site-packages\pywinauto\controls\__init__.py", line 36, in <module>
from . import uiawrapper # register "uia" back-end (at the end of uiawrapper module)
File "C:\Anaconda3\lib\site-packages\pywinauto\controls\uiawrapper.py", line 47, in <module>
from ..uia_defines import IUIA
File "C:\Anaconda3\lib\site-packages\pywinauto\uia_defines.py", line 181, in <module>
pattern_ids = _build_pattern_ids_dic()
File "C:\Anaconda3\lib\site-packages\pywinauto\uia_defines.py", line 169, in _build_pattern_ids_dic
if hasattr(IUIA().ui_automation_client, cls_name):
File "C:\Anaconda3\lib\site-packages\pywinauto\uia_defines.py", line 50, in __call__
cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs)
File "C:\Anaconda3\lib\site-packages\pywinauto\uia_defines.py", line 60, in __init__
self.UIA_dll = comtypes.client.GetModule('UIAutomationCore.dll')
File "C:\Anaconda3\lib\site-packages\comtypes\client\_generate.py", line 110, in GetModule
mod = _CreateWrapper(tlib, pathname)
File "C:\Anaconda3\lib\site-packages\comtypes\client\_generate.py", line 184, in _CreateWrapper
mod = _my_import(fullname)
File "C:\Anaconda3\lib\site-packages\comtypes\client\_generate.py", line 24, in _my_import
return __import__(fullname, globals(), locals(), ['DUMMY'])
File "C:\Anaconda3\lib\site-packages\comtypes\gen\_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py", line 2217, in <module>
( ['out', 'retval'], POINTER(POINTER(IUIAutomationElementArray)), 'children' )),
File "C:\Anaconda3\lib\site-packages\comtypes\__init__.py", line 329, in __setattr__
self._make_methods(value)
File "C:\Anaconda3\lib\site-packages\comtypes\__init__.py", line 698, in _make_methods
prototype = WINFUNCTYPE(restype, *argtypes)
File "C:\Anaconda3\lib\ctypes\__init__.py", line 123, in WINFUNCTYPE
class WinFunctionType(_CFuncPtr):
TypeError: item 2 in _argtypes_ passes a union by value, which is unsupported.
Process finished with exit code 1
위 내용은 아래의 코드를 파이참에서 실행시켰을 때 나오는 오류입니다.
from pywinauto import application
from pywinauto import timings
import time
import os
app = application.Application()
app.start("C:/Kiwoom/KiwoomFlash2/khministarter.exe")
title = "번개 Login"
dlg = timings.WaitUntilPasses(20, 0.5, lambda: app.window_(title=title))
pywinauto패키지를 윈도우 power shell에서 pip 명령어를 통해 다운로드를 받은 후 실행을 했습니다.
실행하려는 윈도우 파일도 설치되어있고 디렉토리 또한 문제가 없습니다.
파이참 파이썬 콘솔에서 패키지를 인식하지 못하는 것 아닐까?라는 의심이 들긴 하지만, 인식여부를 확인하는 방법을 몰라 헤매고 있는 상태입니다.
혹시라도, 제가 놓치고 있는 부분이나 이 오류를 해결하는 방법을 알려주신다면 정말 감사하겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
파이썬 버전을 확인해보시기 바랍니다.
등록되어 있는 이슈이고 최신버전의 파이썬에서는 문제가 있습니다. 여기서 최신버전이라고 함은 ctypes 가 업데이트된 버전입니다.
ctypes 에서 COM type 을 처리시 타입을 변경한 모양인데 python쪽 이슈로 다음 fix 버전에서 조치될 것으로 보입니다.
즉 3.8.1 이나 3.7.6 등 제일 마지막 픽스 버전이 최신이면 문제가 됩니다.
파이썬을 3.8.0 이나 3.7.5 로 다운그레이드하면 문제가 없습니다.
- 3.7.5 도 문제가 있는 모양이군요 3.7.4 로 해야 될 듯 하네요. 정영훈 2020.2.16 11:39
- 감사합니다. 3.7.4로 해보기 이전에 3.5가 이미 있어서, 먼전 실행해보았는데 바로 실행이됩니다. 그리고pywinauto 패키지를 윈도우 파워쉘에서 설치 했는데, 아나콘다 prompt에서 다시 설치를 하니 클래스 임포트도 이루어지네요!! 감사합니다. 덕분에 막히던 부분이 해결되었습니다!! 알 수 없는 사용자 2020.2.16 13:37
댓글 입력