파이썬 마을 게시판 인덱스 파이썬 마을
우리나라 파이썬 사용자들의 이야기 마을
 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 
Google
python.or.kr Web

py2exe시 unknown encoding: cp949 대한 대처.

 
글 쓰기   답변 달기    파이썬 마을 게시판 인덱스 -> 파이썬 팁/강좌/모듈소개 모음
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
elecguy



가입:
올린 글: 221

올리기올려짐: 2004 2월 14 2:27 pm    주제: py2exe시 unknown encoding: cp949 대한 대처. 인용과 함께 답변

py2exe시 unknown encoding: cp949 대한 대처.

Windows2000, python 2.3.3 환경입니다.
9x나 NT,XP는 테스트 안 해봤습니다.

'cp949' 엔코딩 사용시 파이썬스크립트상태로 실행하면 아무런 문제가 없습니다.
하지만, py2exe로 패키징하여 실행하면 에러가 납니다.
encoding 패키지를 강제로 포함시켜도 말이죠.
perky, exman 님등에 물어본 결과 py2exe로 실행하면 lib\site.py 를
자동으로 임포트하지 않아서 생기는 문제인 것 같다고 합니다.

가장 손쉬운 해결방법은 'mbcs' 엔코딩을 사용하는 겁니다.
이 경우 스크립트나 py2exe도 모두 실행 잘 됩니다.
문제는 리눅스나 타 OS에서 mbcs 엔코딩을 인식하지 못한다는 겁니다.
물론 윈도에서만 쓸거라면 고집하면 모르겠지만 python의 멀티플랫폼지원이 빛을 바래겠죠?

그러면 cp949를 윈도상에서 쓸 경우 py2exe시 에러유형을 보겠습니다.

유형 A.
아래와 같은 코드가 포함된 소스를 execfile()로 실행하면
코드:
# -*- coding: cp949 -*-

아래의 에러메시지를 만나게 됩니다.
코드:
SyntaxError: 'unknown encoding: cp949'


유형 B.
다음 코드 같은 경우
코드:
unicode(mi18n.Msg.AutoUpdate,'cp949').encode('cp949')

아래의 에러메시지를 만나게 됩니다.
코드:
LookupError: unknown encoding: cp949


해결법.
유형A,B 모두 CJKcodecs를 설치해야합니다.
CJKcodecs 는 여기서 다운로드 : http://cjkpython.i18n.org/index-ko.html

해결 A.
execfile() 를 실행하기전에 다음과 같이 임포트합니다.
코드:
from cjkcodecs import aliases

그리고 py2exe 실행시 다음과 같은 옵션으로 CJKcodecs 패키지를 강제로 추가합니다.
py2exe가 자동으로 추가해주지않는군요.
코드:
--packages encodings,cjkcodecs


해결 B.
'cp949' 엔코딩을 사용하기 전에 다음과 같이 임포트합니다.
코드:
from cjkcodecs import multibytecodec, mapdata_ko_KR, cp949, _cp949, aliases

참고로 이건 테스트해보지않았습니다. 아마도 될듯..
안되면 py2exe시 위와 같이 옵션을 추가해 보세요.

참고로, 어제(2월13일) CJKPython2.3.3을 perky 님께서 릴리즈했네요.
cjkcodecs 패키지를 아예 python23h.dll 에 포함시켜서 위와 같이 복잡하게 생각안해도 된다는군요.

Python2.4에 기본으로 포함된다니 2.4가 빨리 출시되기를 기다려겠네요.

지금 CJKPython2.3.3으로 바꿔서 테스트하러 갑니다.. 캬캬캬.
_________________
폐인, 노가다 그 끝은..?
위로
사용자 정보 보기 비밀 메시지 보내기    
elecguy



가입:
올린 글: 221

올리기올려짐: 2004 2월 14 3:03 pm    주제: CJKPython2.3.3 에서는 아무런 문제가 없네요.. 인용과 함께 답변

후훗, CJKcodecs가 파이썬 기본모듈에 들어가버리니 아무런 문제가 없네요..
xx.encode('cp949'). #-*- coding: cp949 -*- 모두 잘 py2exe 로 패키징되고 실행되네요.
위와 같이 복잡한 짓을 안해도 말이죠. 짝짝짝..
더더욱 Python 2.4가 기다려지네요! Perky님 만세, Python 만세..
_________________
폐인, 노가다 그 끝은..?
위로
사용자 정보 보기 비밀 메시지 보내기    
이전 글 표시:   
글 쓰기   답변 달기    파이썬 마을 게시판 인덱스 -> 파이썬 팁/강좌/모듈소개 모음 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다



Powered by phpBB © 2001, 2005 phpBB Group
회선/장비: Daum DNA , 관리: 장혜식,서상현