Using py2exe to freeze your application

The following will explain how to freeze a Python/wxPython application using the py2exe tool.

What Objects are Involved

You will need a working development environment including

Process Overview

A small sample wxPython "Hello world" application will be used to demonstrate the process. I created the tiny application using Boa Constructor but you could use any other IDE you use for your wxPython development. I did the initial creation of the setup.py file with Gui2Exe and then keep maintaining it and running it from the IDE (Boa in my case).

Python 2.5

The setup.py needed for Python 2.5 or lower is shown on the py2exe for Python 2.5 page.

Python 2.6

The setup.py needed for Python 2.6 is shown on the py2exe for Python 2.6 page.

Sample wxPython application

Save the following code in your working folder as a file called 'simplewx.py'.

 1 #Boa:Frame:Frame1
 2 
 3 import wx
 4 
 5 def create(parent):
 6  return Frame1(parent)
 7 
 8 [wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1BUTTON2, wxID_FRAME1PANEL1, 
 9  wxID_FRAME1STATICTEXT1, 
 10 ] = [wx.NewId() for _init_ctrls in range(5)]
 11 
 12 class Frame1(wx.Frame):
 13  def _init_coll_bsPanel_Items(self, parent):
 14  # generated method, don't edit
 15 
 16  parent.AddWindow(self.staticText1, 0, border=10,
 17  flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALL | wx.EXPAND)
 18  parent.AddSizer(self.fgsButtons, 1, border=2, flag=wx.ALL | wx.EXPAND)
 19 
 20  def _init_coll_fgsButtons_Items(self, parent):
 21  # generated method, don't edit
 22 
 23  parent.AddWindow(self.button1, 1, border=2, flag=wx.ALL | wx.EXPAND)
 24  parent.AddWindow(self.button2, 1, border=2, flag=wx.ALL | wx.EXPAND)
 25 
 26  def _init_coll_bsFrame_Items(self, parent):
 27  # generated method, don't edit
 28 
 29  parent.AddWindow(self.panel1, 1, border=2,
 30  flag=wx.EXPAND | wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL)
 31 
 32  def _init_coll_fgsButtons_Growables(self, parent):
 33  # generated method, don't edit
 34 
 35  parent.AddGrowableCol(0)
 36  parent.AddGrowableCol(1)
 37 
 38  def _init_sizers(self):
 39  # generated method, don't edit
 40  self.bsPanel = wx.BoxSizer(orient=wx.VERTICAL)
 41 
 42  self.bsFrame = wx.BoxSizer(orient=wx.VERTICAL)
 43 
 44  self.fgsButtons = wx.FlexGridSizer(cols=2, hgap=0, rows=0, vgap=0)
 45 
 46  self._init_coll_bsPanel_Items(self.bsPanel)
 47  self._init_coll_bsFrame_Items(self.bsFrame)
 48  self._init_coll_fgsButtons_Items(self.fgsButtons)
 49  self._init_coll_fgsButtons_Growables(self.fgsButtons)
 50 
 51  self.SetSizer(self.bsFrame)
 52  self.panel1.SetSizer(self.bsPanel)
 53 
 54  def _init_ctrls(self, prnt):
 55  # generated method, don't edit
 56  wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
 57  pos=wx.Point(642, 279), size=wx.Size(236, 106),
 58  style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
 59  self.SetClientSize(wx.Size(220, 70))
 60 
 61  self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
 62  pos=wx.Point(2, 2), size=wx.Size(216, 66),
 63  style=wx.TAB_TRAVERSAL)
 64 
 65  self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
 66  label=u'Hello world!', name='staticText1', parent=self.panel1,
 67  pos=wx.Point(10, 10), size=wx.Size(196, 13),
 68  style=wx.ALIGN_CENTRE)
 69 
 70  self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='button1',
 71  name='button1', parent=self.panel1, pos=wx.Point(4, 37),
 72  size=wx.Size(100, 23), style=0)
 73 
 74  self.button2 = wx.Button(id=wxID_FRAME1BUTTON2, label='button2',
 75  name='button2', parent=self.panel1, pos=wx.Point(116, 37),
 76  size=wx.Size(100, 23), style=0)
 77 
 78  self._init_sizers()
 79 
 80  def __init__(self, parent):
 81  self._init_ctrls(parent)
 82  
 83 
 84 if __name__ == '__main__':
 85  app = wx.PySimpleApp()
 86  frame = create(None)
 87  frame.Show()
 88 
 89  app.MainLoop()

Other wiki pages to check

Comments

Please feel free to provide any feedback on this page either here, on the wxPython-user list or to werner.bruhin at free.fr.

py2exe (last edited 2010年08月21日 18:54:09 by c-75-72-71-98)

NOTE: To edit pages in this wiki you must be a member of the TrustedEditorsGroup.

AltStyle によって変換されたページ (->オリジナル) /