使用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的Django框架中的QuerySets
Apr 20 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
Python 描述符(Descriptor)入门
Nov 20 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
python 如何在list中找Topk的数值和索引
May 20 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
优化PHP代码的53条建议
2008/03/27 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
jQuery 自定义函数写法分享
2012/03/30 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
jQuery功能函数详解
2015/02/01 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
python 循环while和for in简单实例
2016/08/16 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
使用Python对Access读写操作
2017/03/30 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
python编写猜数字小游戏
2019/10/06 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
信息总监管理职责范本
2014/03/08 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书