使用cx_freeze把python打包exe示例

时间:2021-06-10 05:36:20 

需要使用到的文件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里面的参数选项可以自己去官网查看相应的选项信息

标签:cx,freeze,python,打包,exe
0
投稿

猜你喜欢

  • SQLServer 2008中通过DBCC OPENTRAN和会话查询事务

    2024-01-13 15:35:55
  • 详解Python静态网页爬取获取高清壁纸

    2023-10-18 08:27:42
  • javascript开发中使用onpropertychange,oninput事件解决onchange事件的不足

    2024-04-26 17:14:12
  • Python自动重试HTTP连接装饰器

    2022-02-18 12:55:55
  • MySQL在Linux系统中隐藏命令行中的密码的方法

    2024-01-20 03:38:34
  • 网易首页的新闻代码

    2022-02-24 16:01:15
  • Vue自定义指令实现弹窗拖拽四边拉伸及对角线拉伸效果

    2024-05-28 15:43:08
  • Mysql中正则表达式Regexp常见用法及说明

    2024-01-14 21:51:35
  • 一个div层打开显示效果 js

    2008-05-19 12:35:00
  • ASP编程代码:隐藏图片的真实地址

    2008-10-19 17:14:00
  • 经测试最好用的mysql密码忘记的解决方法

    2024-01-27 17:12:57
  • pytorch获取模型某一层参数名及参数值方式

    2022-07-03 06:10:28
  • 巧用JDBC实现对MySQL的“增删改查”

    2008-12-31 15:12:00
  • 简述MySql四种事务隔离级别

    2024-01-18 12:52:11
  • Python根据字典的值查询出对应的键的方法

    2022-04-07 04:01:49
  • Oracle的约束介绍与约束维护

    2024-01-28 04:19:05
  • python利用不到一百行代码实现一个小siri

    2021-07-23 13:46:13
  • Python实现FTP上传文件或文件夹实例(递归)

    2021-11-21 06:05:30
  • 一篇文章带你学习Python3的高阶函数

    2021-04-24 00:58:51
  • 使用Python对Excel进行读写操作

    2022-05-25 16:56:32
  • asp之家 网络编程 m.aspxhome.com