使用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下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
python 内置函数filter
Jun 01 Python
python合并同类型excel表格的方法
Apr 01 Python
python批量复制图片到另一个文件夹
Sep 17 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
详解python中__name__的意义以及作用
Aug 07 Python
wxPython色环电阻计算器
Nov 18 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
Django框架models使用group by详解
Mar 11 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
python 带时区的日期格式化操作
Oct 23 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
Feb 25 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面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
python解析xml文件实例分享
2013/12/04 Python
python实现异步回调机制代码分享
2014/01/10 Python
Python中datetime模块参考手册
2017/01/13 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
python 下划线的不同用法
2020/10/24 Python
银行实习人员自我鉴定
2013/09/22 职场文书
初中语文教学反思
2014/02/02 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
演讲比赛策划方案
2014/06/11 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL