프로그래밍 언어/<Python>

py2exe with PMW

소혼 2010. 12. 28. 21:25
반응형
이전글 : py2exe 설치 및 간단한 예제

파이썬에서 사용하는 PMW라는 위젯이 있습니다.
(이전 글 참고 : PMW 설치하기PMW 위젯을 사용하는 방법)
간단히 말해, PMW는 다양한 위젯셋을 제공하는 라이브러리입니다.

그런데 이 PMW를 포함해서 실행파일을 만들 때 다소 까다로운 부분이 있습니다.
사용한 hello.py는 다음과 같습니다.
 import Tkinter
from Pmw import *

root = Tkinter.Tk()
Pmw.initialise(root)

root.mainloop()


그냥 생성하면 마치 잘 생성된것처럼 보이지만 아래 그림처럼 에러가 발생합니다.
(앞의 예제 파일을 수정하여 진행하므로, h:\project\python\py2exe 폴더에서 그대로 작업합니다.)


이를 해결하기 위해서는 먼저 PMW를 bundlepmw.py 를 이용해 생성을 해주어야 합니다.
bundlepmw.py는 PMW를 설치한 폴더 밑 bin이라는 폴더 밑에 있습니다.
저의 경우, C:\Python27\Lib\Pmw\Pmw_1_3\bin 가 됩니다. (Python 2.7 에 PMW1.3 설치)

해당 경로에서 bundle을 생성하기 위해 아래와 같은 명령어를 입력하겠습니다.
python bundlepmw.py C:\Python27\Lib\Pmw\Pmw_1_3\lib

정상적으로 잘 되면 좋겠지만, 안타깝게도 전 아래와 같은 에러가 발생했습니다.

에러 메시지는 regsub가 없다는 것입니다.
regsub는 deprecated 된 것 같습니다.(http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=2537&p=57943)
해당 모듈을 re로 교체합니다.
#import regsub
import re
사용하는 부분들이 5군데 정도 있는데 모두 교체합니다.
저의 경우 regsub.gsubre.sub로 교체했습니다.

교체가 잘 이뤄진 후 다시 해당 파일을 실행하시면, 에러 없이 Pmw.py 파일이 생성됩니다.
이후 생성된 Pmw.py을 작업중이던 스크립트가 있는 곳(저의 경우 h:\project\python\py2exe) 에 복사합니다.
또한, Pmw의 lib 폴더(저의 경우 C:\Python27\Lib\Pmw\Pmw_1_3\lib)에서 PmwBlt.py, PmwColor.py를 복사해 같은 경로에 넣습니다.

즉파일이 아래와 같이 존재하게 됩니다.

이제 다시 py2exe 생성을 시도합니다.
python setup.py py2exe

정상적으로 생성되고 dist 폴더 아래에 생긴 hello.exe를 실행하면 아래와 같이 됩니다.

반응형

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

[파이썬] 이미지 크기 변환 배치  (0) 2011.06.12
py2exe  (0) 2010.12.28
[python]XML 처리  (0) 2010.10.12
[파이썬] CSV2SQL ver 0.1  (0) 2010.08.27
[python] Windows에서 커맨드창 하나 더 띄우기  (0) 2010.08.24