使用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中操作字典之fromkeys()方法的使用
May 21 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 Python
Python中的多行注释文档编写风格汇总
Jun 16 Python
Python单元测试简单示例
Jul 03 Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 Python
Flask之请求钩子的实现
Dec 23 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
Apr 05 Python
Python实现插入排序和选择排序的方法
May 12 Python
将python文件打包成EXE应用程序的方法
May 22 Python
django的model操作汇整详解
Jul 26 Python
Flask框架路由和视图用法实例分析
Nov 07 Python
python分别打包出32位和64位应用程序
Feb 18 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读取txt文本文件并分页显示的方法
2015/03/11 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
Python 用户登录验证的小例子
2013/03/06 Python
详解python开发环境搭建
2016/12/16 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
abstract class和interface有什么区别
2013/08/04 面试题
司机岗位职责
2013/11/15 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
信仰心得体会
2014/09/05 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript