2018-09-20
대신증권 API를 사용하려고 하다가 아래와 같은 에러가 발생했다.
>>> import win32com.client
>>> inCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch
    IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221021, '작업을 사용할 수 없습니다.', None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    inCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221164, '클래스가 등록되지 않았습니다.', None, None)
찾아본 결과, 32bit로 개발된 COM(Component Object Model)을 python 64bit에서 돌렸을때 발생하는 문제였다.

결국 python을 32bit로 다시 설치하니 아무 문제 없이 잘 되었다.