使用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解析发往本机的数据包示例 (解析数据包)
Jan 16 Python
python模块之StringIO使用示例
Apr 08 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
django在接受post请求时显示403forbidden实例解析
Jan 25 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
python实现知乎高颜值图片爬取
Aug 12 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
python 将Excel转Word的示例
Mar 02 Python
Python PIL按比例裁剪图片
May 11 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
FCKeditor的安装(PHP)
2007/01/13 PHP
php 在文件指定行插入数据的代码
2010/05/08 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
在Python中使用Neo4j数据库的教程
2015/04/16 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Python中文编码知识点
2019/02/18 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
python exit出错原因整理
2020/08/31 Python
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
《一株紫丁香》教学反思
2014/02/19 职场文书
小学英语课后反思
2014/04/26 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
在Python中如何使用yield
2021/06/07 Python
css弧边选项卡的项目实践
2023/05/07 HTML / CSS