当前位置 博文首页 > 使用cx_freeze把python打包exe示例

    使用cx_freeze把python打包exe示例

    作者:admin 时间:2021-06-19 19:30

    需要使用到的文件wxapp.py, read_file.py, setup.py

    复制代码 代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #file: wxapp.py

    import wx
    import os
    import sys
    import read_file


    class Frame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, parent=None, title='Hello from cx_Freeze')
            panel = wx.Panel(self)
            closeMeButton = wx.Button(panel, -1, 'Close Me')
            wx.EVT_BUTTON(self, closeMeButton.GetId(), self.OnCloseMe)
            wx.EVT_CLOSE(self, self.OnCloseWindow)
            pushMeButton = wx.Button(panel, -1, 'Push Me')
            wx.EVT_BUTTON(self, pushMeButton.GetId(), self.OnPushMe)
            sizer = wx.BoxSizer(wx.HORIZONTAL)
            sizer.Add(closeMeButton, flag=wx.ALL, border=20)
            sizer.Add(pushMeButton, flag=wx.ALL, border=20)
            panel.SetSizer(sizer)
            topSizer = wx.BoxSizer(wx.VERTICAL)
            topSizer.Add(panel, flag=wx.ALL | wx.EXPAND)
            topSizer.Fit(self)

        def OnCloseMe(self, event):
            obj = read_file.PrintContent()
            if getattr(sys, 'frozen', None):
                path = os.path.dirname(sys.executable)
            else:
                path = os.path.dirname(__file__)
            path = os.path.join(path, "read_file.py")
            obj.show_content(path)

        def OnPushMe(self, event):
            wx.MessageBox('I was pushed!', 'Informational message')

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


    class App(wx.App):
        def OnInit(self):
            frame = Frame()
            frame.Show(True)
            self.SetTopWindow(frame)
            return True


    app = App(1)
    app.MainLoop()

    复制代码 代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #file: read_file.py

    class PrintContent(object):
        def show_content(self, path):
            f = open(path)
            for line in f:
                print line
            f.close()

    复制代码 代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #file: setup.py

    # A simple setup script to create an executable running wxPython. This also
    # demonstrates the method for creating a Windows executable that does not have
    # an associated console.
    #
    # wxapp.py is a very simple 'Hello, world' type wxPython application
    #
    # Run the build process by running the command 'python setup.py build'
    #
    # If everything works well you should find a subdirectory in the build
    # subdirectory that contains the files needed to run the application
    import sys
    from cx_Freeze import setup, Executable

    build_exe_options = {"optimize": 2,
                         "include_files": ["read_file.py"]}

    base = None
    if sys.platform == 'win32':
        base = 'Win32GUI'

    executables = [Executable(script='wxapp.py',
                   base=base,
                   targetName="Demo.exe",
                   compress=True,
                   icon="py.ico")]

    setup(name='wxapp',
          version='0.1',
          description='Sample cx_Freeze wxPython script',
          options = {"build_exe": build_exe_options},
          executables=executables)

    打开cmd进入代码所在目录,然后输入:

    复制代码 代码如下:

    python setup.py bdist_msi

    然后会生成build和dist两个文件夹,build文件夹里存放的是exe可执行文件和所依赖的库,直接把整个文件夹复制给别人就可以通过双击exe文件运行了,dist文件夹下是build文件夹的安装程序,直接传dist文件夹下的安装包给朋友,朋友运行安装包后会得到和build一样的文件夹,路径由用户自己选择

    至于setup.py里面的参数选项可以自己去官网查看相应的选项信息

    js
    下一篇:没有了