인프런 커뮤니티 질문&답변

이상하님의 프로필 이미지
이상하

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

글자 입력하기

hwp = win32.gencache.EnsureDispatch 에러

해결된 질문

작성

·

57

1

image.png

 

안녕하세요?

어제까지 작동하던 코드가 오늘 위 에러 메시지가 나면서 작동이 되지 않네요.

예외가 발생했습니다. AttributeError

module 'win32com.gen_py.7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0' has no attribute 'CLSIDToClassMap'

File "E:\Naver MYBOX\빠른동기화폴더\999_업무용주요매크로\999_한글매크로\01_일상의코딩\002_import win32com.py", line 3, in <module> hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") # 한글 실행 AttributeError: module 'win32com.gen_py.7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0' has no attribute 'CLSIDToClassMap'

 

GPT에게 물어 보니 com 이 손상되었다고 하면서

  1. com 캐시 재생성 하거나

  2. 캐시를 재설정 및 재실행을 하라고 하는데,

정말 그런건가요?

image.pngimage.png

위 두 코드를 넣어 보았는데, 계속해서 에러메시지가 나네요 TT

 

답변 2

2

일코님의 프로필 이미지
일코
지식공유자

가끔 이런 경우가 있습니다ㅜ

저도 정확한 원인을 모르겠지만,
잘 되다가 어느 시점에(아마 한/글이 업데이트되거나, PC에 어떤 변경이 있는 경우?)
갑자기 저 오류가 뜹니다.

 

해결방법은 상당히 간단한데요.
상하님 PC에서 gen_py 폴더를 찾아 삭제한 후,
파이참이나 vscode를 재시작하시면 오류가 발생하지 않습니다.

 

일반적인 gen_py 폴더 생성경로는

c:\Users\사용자\AppData\Local\Temp\gen_py

입니다.

 

아무쪼록 잘 해결되기를 바라겠습니다.

 

감사합니다.

행복한 하루 되세요!!!

이상하님의 프로필 이미지
이상하
질문자

두 분 모두 말씀 감사합니다! 천천히 읽고 다시 공부해 보겠습니다. 기운이 솟네요!! ㅎㅎ

일코님의 프로필 이미지
일코
지식공유자

상하님!

 

그리고 앞으로 hwp 실행하실 때, 아래 코드 대신에

import win32com.client as win32

hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True

 

아래 코드로 실행하시면 편리해요.

from pyhwpx import Hwp

hwp = Hwp()

pyhwpx 임포트하시기 전에
먼저 터미널에서 pip install pyhwpx라고 실행해서 pyhwpx 설치하셔야 하고요.

 

그 외 사용법은 동일합니다.

몇 가지 편리한 확장메서드도 있고,

기존에는 hwp.Run("SelectAll") 처럼 실행했는데

pyhwpx로 한/글을 실행하는 경우에는

hwp.SelectAll() 방식으로 Run 액션을 간편하게 실행 가능해서

꽤 편리해요!ㅎ

 

아래아한글 자동화는 어느 정도 익숙해지면 참 재미있는데
처음 배울 때, 익숙해지기까지 시간이 꽤 걸립니다.

 

다른 오류가 나거나, 제 설명이 잘 이해가 되지 않을 때
정말 자유롭게 질문글 남겨주세요!
하루에 여러개씩 남겨주셔도
제가 시간 날 때마다 답글 남길게요!!!

1

안녕하세요, 인프런 AI 인턴입니다.

이상하님의 질문은 “win32com” 모듈을 사용하여 아래아한글(HWP) 자동화 스크립트 실행 중 발생한 AttributeError 관련으로, win32com.gen_py 캐시 문제가 주된 원인으로 보입니다. 해당 오류는 Python과 COM 컴포넌트 간의 연결 문제에서 많이 보이며, 일반적으로 캐시 재생성이나 재설정을 통해 해결할 수 있습니다.

정리해보면, 스크립트에서 발생한 오류는 ‘win32com’ 모듈의 ‘gen_py’ 캐시 디렉토리에 문제가 생겼을 때 주로 발생합니다. 이미 시도해보신 대로 gen_py 디렉토리 삭제나 win32com.client.gencache를 사용한 캐시 재생성 명령은 캐시 문제를 해결하기 위한 적절한 접근 방법입니다.

관련하여, 이전에 비슷한 문제를 질문하신 다른 학습자의 질문과, 해당 질문에 대한 지식공유자의 답변이 있습니다. 이들 답변에서 제시된 해결 방안을 참조하여 문제를 해결하실 수 있을 것 같습니다.

유사 질문 및 해결 방안 링크

  1. win32 에러 관련

    • 위 질문에서는 win32com.client 모듈 사용 중 에러가 발생했을 때, gen_py 폴더를 삭제 후 재실행하는 방법으로 문제를 해결하였습니다.
  2. hwp = win32.gencache.EnsureDispatch(“hwpframe.hwpobject”) 에러

    • 이 경우도 win32com 관련 에러에 대한 다양한 해결책이 제시되었습니다. 특히, pythonwin 실행 후 COM Makepy utility를 통해 해결하는 방법이 포함되어 있습니다.

에러 메시지가 계속해서 나타난다면, 다음과 같은 추가 조치를 고려해볼 수 있습니다:
- Python 환경이나 win32com 모듈의 설정을 확인해보세요.
- 가상 환경을 사용한다면, 가상 환경 내에서 필요한 모듈을 정확히 설치했는지 확인하세요.
- win32com.client 모듈과 관련된 다른 종속성 문제가 없는지 검토해보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

일코님의 프로필 이미지
일코
지식공유자

인프런 AI인턴님 실력이 일취월장!

이상하님의 프로필 이미지
이상하
질문자

두 분 모두 말씀 감사합니다! 천천히 읽고 다시 공부해 보겠습니다. 기운이 솟네요!! ㅎㅎ

이상하님의 프로필 이미지
이상하

작성한 질문수

질문하기