py2exe 에 해당하는 글1 개
2005.06.20   py2exe && 인스톨팩토리 로 배포파일 만들기


py2exe && 인스톨팩토리 로 배포파일 만들기
日新又日新 | 2005. 6. 20. 06:52

py2exe와 인스톨 팩토리의 콤비네이션 이용하기

안녕하세요..오늘은 py2exe와 인스톨 팩토리의 콤비네이션을 배워보겠습니다. 다들 아시죠? 콤비네이션이 얼마나 무서운건지를...-_-;; 퍼퍼퍼퍽....하면 끝이죠..

우선 ..py2exe가 멀까요? 보아하니 py 즉 파이썬 파일을 2 exe로 만든다...exe로 만든다..제가 설명해 드리면 파이썬 소스코드 파일을 exe 파일로 만들어주는 것입니다. 여러분이 파이썬으로 프로그래밍을 하면 그것은 py 파일로 저장되죠? py파일은 컴퓨터에 파이썬 인터프리터가 설치가 되어야 실행이 됩니다. 그렇다면 만약에여러분들이 만든 프로그램을 다른 사람에게 주고 싶을땐 어떻게 해야 하는걸까요? 상대방이 파이썬 인터프리터를 설치를 해야한다면 얼마나 불편하겠씁니까....간단한 프로그램 하나 실행하려면 파이썬을 설치하고 해야한다..이러면 아무도 프로그램을 사용안할지도 모르겠습니다. 여기서 등장한 것이 바로 py2exe입니다. 이것이 바로 윈도우에서 실행파일 즉 exe로 만들어주는 것이죠......대충 이해가 가시죠? ^-^

다음은 인스톨 팩토리입니다. 여러분들 모두 프로그램 설치 무쟈게 많이 해보셨을겁니다. 파이썬을 깔때도 인스톨 한거죠? 보통 인스톨할 때 외국제 프로그램인 인스톨 쉴드나..기타 등등 프로그램이 많이 사용되는데요..돈을 내야 한다는 무리수가.-_-;; 그래서 역시 공짜인 대한민국 프로그램 인스톨 팩토리를 이용해 설명해 보겠습니다. 기대를 하세요...

1. py 코드를 exe로 만들어 보자
일단 프로그램을 배포하려면 소소코드를 exe로 만들어야 합니다.

우선 다음과 같이 여러분의 소스코드가 준비가 되야겠죠? 저는 이미지 하나를 포함시킨 아래의 소스 코드를 준비하였습니다. 기본적인 창을 띠우는 소스 코드야..당연히 되겟죠.. 여기서는 이미지 하나에 버튼등을 넣어보았습니다. (소스코드 이름은 ex.pyw)입니다.

#-*-coding:mbcs-*-
import wx  
#로그인 창의 버튼 이벤트 ID값
ID_LOGINENTER=1100
ID_LOGINEXIT=1101

class MyFrame(wx.Frame):
    def __init__(self, parent, id,title):
        wx.Frame.__init__(self, parent,id,title,size=(200,240),pos=wx.DefaultPosition,
            style=wx.DEFAULT_FRAME_STYLE)
        panel=wx.Panel(self,-1)
        wx.StaticBitmap(panel,-1,wx.Bitmap('image\\login.gif',wx.BITMAP_TYPE_GIF),(25,12))
        wx.StaticLine(panel, -1, (-1,100),size=(200,-1), style=wx.LI_HORIZONTAL)
        wx.StaticText(panel, -1,'암호를 입력하세요. 초기\n암호는 korea 입니다', (30, 110))
        self.TextCtrl=wx.TextCtrl(panel, -1, "", wx.Point(30,140),wx.Size(135,20),style=wx.TE_PASSWORD )

        wx.Button(panel,ID_LOGINENTER,'확인', wx.Point(50,170),wx.Size(40,24))
        wx.EVT_BUTTON(self,ID_LOGINENTER, self.OnEnter)
        wx.Button(panel,ID_LOGINEXIT,'종료', wx.Point(110,170),wx.Size(40,24))
        wx.EVT_BUTTON(self,ID_LOGINEXIT, self.OnExit)
        wx.StaticLine(panel, -1, (-1,200),size=(200,-1), style=wx.LI_HORIZONTAL)

    def OnEnter(self,event):
        dlg=wx.MessageDialog(self,'암호는 %s 입니다.'%self.TextCtrl.GetValue(),'암호',wx.OK)
        dlg.Centre()
        dlg.ShowModal()
        self.TextCtrl.Clear()        

    def OnExit(self,event):
        self.Destroy()

class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        self.frame = MyFrame(None,-1,'wxFrame 사용')
        self.frame.Show()
        self.SetTopWindow(self.frame)
        return True

if __name__ == '__main__':
    app=MyApp(0)
    app.MainLoop()

2. 다음과 같이 setup.py 파일을 작성한다. (여러분이 만든 소스코드 이름이 ex.pyw 라고 가정)

#setup.py

from distutils.core import setup
import glob
import py2exe

setup(name="ex",
        scripts=["ex.pyw"])

3. 여러분이 만든 프로그램 소스코드...저는 ex.pyw 랑...그리고 setup.py 파일을 c:\python23 폴더에 가져다 놓습니다.

4. 도스창에서 다음을 실행합니다.

python setup.py py2exe

5. 다음과 같이 C:\Python23\dist 폴더에 보면 ex 라는 이름의 폴더가 생기고 안에 파일이 생성이 됩니다. 아래의 그림을 보시면 알겠지만 ex.exe가 실행파일입니다.  물론 나머지 파일이 있어야 실행이되죠..

6. 아참 ...까먹을 뻔 했습니다. 이미지 파일 문제인데요...그냥 이미지 파일은  위에 그림처럼 실행 파일이 있는 곳 (c:\python23\dist\ex)이죠? 여기에다 그냥 복사해서 넣어주시면 됩니다. ^-^;; 이해 가시죠?


참고사항

py2exe가 한글문제에 약합니다. 보통 한글을 인코딩....encode 어쩌구 해가지고 사용했던 소스코들은 exe로 만든 후 실행하면 잘 안되는 경우가 있습니다. 그럴땐 이렇게..

python setup.py py2exe --packages encodings

주> 이 부분은 파이썬 2.4 에 맞추어서 SeaofMagic 이 직접 수정하였음. 밑에 아이콘도 수정 요망

또 하나..........아이콘을 넣고 싶을대가 있죠? 위의 ex.exe 실행파일을 보면 py라는 그림으로 되어있죠?
저거 그림을 바꾸려면

python setup.py py2exe packages encodings --force-imports encodings --icon icon.ico

이런식으로 하면 됩니다. 그냥 마지막에 ( --icon 아이콘 파일 ) 이런식이죠....단 xp 이상 컴터에서 실행해야 된답니다. 윈도우 2000인가? -_-;


인스톨 팩토리로 프로그램 배포하기
 아래의 그림을 보시면 알겠지만 여러분들이 만든 프로그램을 py2exe로 만들면 거기에는 여러 파일이 있습니다. wxPython으로 GUI프로그래밍을 했으니깐..당연히 wxPython 파일도 있고 파이썬으로 만들었으니깐 파이썬 파일도 있고..파이썬에서 사용되는 모듈도 파일로 나옵니다.

보통 여러분들이 다른 프로그램들을 설치하려고 다운 받으면 exe 파일 하나로 이루어져 있죠?
(예 : alzip5.3.exe , potoshop6.exe 이런식이죠...)

그리고 또하나 중요한 것은 지금 위의 파일들을 선택한 후 용량을 한번 확인해 보세요..간단한 창하나 만드는데 8M 파일이 생성이 됐습니다. wxmsw24h.dll 파일만 4M가 정도니....인스톨 팩토리는 이러한 문제를 단번에 해결해 줍니다. 모든 파일을 묶어서 하나의 exe 파일로 만들어주면서 압축을 통해서 3~4M 정도로 만들어줍니다. 거의 50% 정도가 압축이 되는거 같습니다. ^^

1. 우선 인스톨 팩토리를 다운 받아서 설치를 해야겠죠? 여러분의 검색 실력을 발휘해서 2.70 버전을 찾아 설치를 해보세요...

2. 다음과 같이 인스톨 팩토리를 실행합니다.

3. 일반 탭을 클릭한 후 아래 그리처럼 설정을 합니다.
타이틀 :  설치화면 상단에 보여질 이름...(보통 프로그램 이름을 하시면 되겠죠?)

소스 폴더 : 현재 프로그램이 있는 폴더져...저는 c:\python23\dist 에 있던 폴더를 그냥 c:\로 복사해서 사용하고 있습니다.

기본 설치폴더 : 프로그램이 설치될 폴더를 설정합니다.

설치화일이 만들어질 폴더 : 인스톨 팩토리를 통해서 설치화일이 만들어지는데 그것을 어디다가 생성할지를 지정하는 곳입니다. 저는 그냥 귀찬아서 바탕화면에 일단 만들려고 합니다.

4. 창 탭을 클릭한 후 아래 그림처럼 설정합니다.

5. 정보탭을 클릭해서 라이센스 정보 및 설치전에 보일 정보를 편집 버튼을 눌러서 편집을 합니다.

6. 단축 아이콘 탭을 눌러 단축 아이콘을 지정합니다.

수정 탭을 누르면 수정을 할 수 있습니다

7. 제거 탭을 클릭 한 후 다음 그림처럼 적당히(?) 설정을 해줍니다.

저는 따로 제거시 실행할 사용자 제거프로그램도 이용하기 때문에 사용중인데..필요에 따라 사용 하셔도 되고 안하셔도 됩니다. ^^

8. 나머지 탭에 대한 설정은 필요한 부분을 사용하면 됩니다. [설치화일 만들기] 버튼을 눌르면 설치 파일이
만들어 집니다.

9. 설치화일은 Rapid Boot Pro.exe 이렇게 실행파일 하나로 만들어 지는것고 용량이 많이 줄어든 것을 알 수 있습니다.

이것으로 오늘 강좌도 끝입니다. 좋은 프로그램 많이 만드셔서 배포하기 바랍니다. ^^


주> 만일 윈도우 XP에서 Python24로 만든다면, mscvr71.dll 파일도 같이 배포를 해서

      system32폴더에 넣어주어야 한다.


== 출처 ==


http://jetc.woto.net/wxpython/py2exe.htm


허락없이 가져와서 죄송합니다...문제되시면 연락 주세요..^^;


 
 
 
트랙백 | 댓글



위치로그 : 태그 : 방명록 : 관리자
이우성's Blog is powered by Daum / Designed by SSen
관리자  |  글쓰기
BLOG main image
전, 이우성입니다. ( I am Woosung, Lee. ) ""
 Category
 Media
 TAGS
 Recent Entries
 Recent Comments
 Calendar
 Archive
 Link Site
 Visitor Statistics
+ Total :
+ Today :
+ Yesterday :
카피
rss