使用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 for Informatics 第11章之正则表达式(二)
Apr 21 Python
python字符串,数值计算
Oct 05 Python
python+opencv实现动态物体追踪
Jan 09 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
python抓取文件夹的所有文件
Feb 27 Python
python 拼接文件路径的方法
Oct 23 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
Apr 23 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
详解Django 时间与时区设置问题
Jul 23 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
Python使用matplotlib绘制圆形代码实例
May 27 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
用Flash图形化数据(一)
2006/10/09 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
详解PHP PDO简单教程
2019/05/28 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
javascript import css实例代码
2008/07/18 Javascript
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python取余运算符知识点详解
2019/06/27 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
大学生毕业自我鉴定范文
2013/11/03 职场文书
荷叶圆圆教学反思
2014/02/01 职场文书
公开承诺书格式
2014/05/21 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
高中物理教学反思
2016/02/19 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
基于Python实现一个春节倒计时脚本
2022/01/22 Python
Linux安装Docker详细教程
2022/07/07 Servers