使用cx_freeze把python打包exe示例


Posted in Python onJanuary 24, 2014

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

Python 相关文章推荐
Python的Flask框架中web表单的教程
Apr 20 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
python读取指定字节长度的文本方法
Aug 27 Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
Python操作CSV格式文件的方法大全
Jul 15 Python
Python使用DFA算法过滤内容敏感词
Apr 22 Python
Python的函数嵌套的使用方法
Jan 24 #Python
下载安装setuptool和pip linux安装pip    
Jan 24 #Python
python解析文件示例
Jan 23 #Python
python回调函数的使用方法
Jan 23 #Python
python中的对象拷贝示例 python引用传递
Jan 23 #Python
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 #Python
python使用scrapy解析js示例
Jan 23 #Python
You might like
重置版游戏视频
2020/04/09 魔兽争霸
php5 and xml示例
2006/11/22 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
django实现模型字段动态choice的操作
2020/04/01 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
生态养殖创业计划书
2014/05/06 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
财务部会计岗位职责
2015/02/03 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python