본문 바로가기
알고리즘 트레이딩/Trouble Shooting

pywintypes.com_error: (-2147221021, '작업을 사용할 수 없습니다.', None, None) 그리고 PATH 간단 설명

by 빵빵댇 2022. 2. 6.

오류 전문

PS C:\Python> python .\getStockInfo.py
Traceback (most recent call last):
  File "C:\Users\kwon\AppData\Local\Programs\Python\Python310\lib\site-packages\win32com\client\dynamic.py", line 86, 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 "C:\Python\getStockInfo.py", line 5, in <module>
    objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
  File "C:\Users\kwon\AppData\Local\Programs\Python\Python310\lib\site-packages\win32com\client\__init__.py", line 117, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch, userName, clsctx)
  File "C:\Users\kwon\AppData\Local\Programs\Python\Python310\lib\site-packages\win32com\client\dynamic.py", line 106, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Users\kwon\AppData\Local\Programs\Python\Python310\lib\site-packages\win32com\client\dynamic.py", line 88, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(
pywintypes.com_error: (-2147221164, '클래스가 등록되지 않았습니다.', None, None)

 

python을 64bit 버전으로 설치한 뒤 win32com 클래스를 사용하려고 시도할 경우 발생하는 오류다. 왜 호환되지 못하는지 자세한 이유까지는 모르지만 (알고 싶지도 않다..) 사용자 입장에서는 아쉬울 따름이다.

 

어쨋든 32bit로 다시 설치하고 앞서 등록했던 아래 글에도 32bit 설치가 필요하다는 내용을 추가해줘야 하게 됐다 (이 글을 올리는 시점에서는 아래 글 수정은 완료된 상태일 것이다)

 

https://bbdad.tistory.com/3?category=536972 

 

1. 파이썬 설치

이 글에서는 파이썬을 설치하고 간단한 코드를 실행해본다. 우선 아래 파이썬 공식 홈페이지에서 인스톨러(설치파일)을 다운로드 한다. www.python.org Welcome to Python.org The official home of the Python Pr..

bbdad.tistory.com

 

python 32bit 설치과정은 64bit 설치와 별반 다를 건 없다. 설치파일만 알맞게 다운로드해서 설치를 진행하면 된다. 32bit 설치파일을 다운로드하는 방법은 위 글을 참고하면 된다.

 

설치를 마치고 프로그램을 다시 실행해보면 동일한 오류가 발생하는데 이는 기존 64bit를 설치할 때 등록한 PATH가 남아있기 때문이라서 이를 수정해줘야 한다. 설치 시 기껏 PATH 자동등록했는데 결국은 직접 PATH를 수정해야 하게 됐다.. 트러블 슈팅을 각오하고 고민없이 설치한 댓가가 생각보다 빨리 돌아왔다.

 

PATH에 대한 간단한 설명을 보려면 아래 더보기 클릭

더보기

이렇게 된 김에 PATH에 대한 내용을 잠시 정리해보려고 한다. PATH는 말그대로 경로 역할을 한다. 우리는 보통 Windows라는 OS가 제공하는 GUI(그래픽UI)에 익숙하기 때문에 특정 파일이나 문서를 실행할 때 windows 탐색기를 통해 폴더(또는 디렉토리)를 찾아들어가서 실행한다. 이 과정 없이 내가 실행하고자 하는 것을 바로 실행할 수 있을까?..

 

있다. 커맨드 창을 띄워서 경로를 직접 입력하여 실행한다면 한번에 대상 프로그램 실행이 가능하다. 단, 이 경우도 모든 경로를 직접 타이핑한다는 점이 다르지, 실행 시 경로를 입력해줘야 한다는 것은 동일하다.

 

같은 위치의 프로그램을 실행하는 두가지 방법

PATH에 등록한다는 것은 이러한 경로를 Windows에 미리 알려주는 것이라고 생각하면 된다. 만약 'C:\Users\kwon\Desktop\까치\개개비\' 라는 경로를 PATH로 등록해놓으면 Notepad.lnk라는 명령어만으로도 해당 위치의 파일을 실행할 수 있을 것이다. 이 정도면 PATH가 어떤건지 정도는 설명이 된 것 같다.

 

64bit 파이썬이 설치 후 32bit 파이썬을 설치한 경우 python 명령어가 디폴트로 32bit 파이썬을 실행하려면 방법은 두가지이다.

  1. 64bit 파이썬 path를 삭제한다. (이 경우 64bit 사용할 수 없음)
  2. 64bit 파이썬 명령어를 python이 아닌 다른 텍스트로 대체한다. (필요에 따라 대체 텍스트로 64bit 파이썬 인터프리터를 사용할 수 있다)

차례대로 설명하도록 하겠다.

 

1. 64bit 파이썬 path를 삭제

 

먼저 내PC를 우클릭하여 속성 메뉴를 클릭한다.

 

 

아래 쪽의 '고급 시스템 설정' 항목을 클릭한다.

 

 

아래와 같이 고급 탭으로 접근하여 '환경 변수(N)...' 버튼을 클릭한다.

 

 

환경 변수의 Path를 선택하고 '편집(E)...' 버튼을 클릭한다.

 

 

아래와 같은 경로 2개를 삭제하면 

 

 

아래와 같이 32bit 파이썬 인터프리터가 실행되어 프로그램이 정상실행 되는 것을 확인할 수 있다.

 

2. 64bit 파이썬 명령어를 python이 아닌 다른 텍스트로 대체

'1. 64bit 파이썬 path를 삭제' 와 동일한 방법으로 환경변수 편집까지 접근하여 PythonXXX\로 끝나는 경로의 폴더에 접근하여 해당 경로 내 python 파일의 이름을 python64로 변경한다. (아래 캡쳐는 파일명을 변경한 상태)

 

 

이후 python 명령어는 32bit 인터프리터를 실행하고 python64 명령어는 64bit 인터프리터를 실행하는 것을 확인할 수 있다.

 

나는 혹시 몰라 2번 방법으로 진행해서 필요할 경우 python64 명령어로 64bit 인터프리터를 사용할 수 있는 상태로 환경설정을 마쳤다. 이번 트러블 슈팅은 이것으로 끝.

댓글