使用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正则表达式教程之一:基础篇
Mar 02 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
python实现月食效果实例代码
Jun 18 Python
django框架模型层功能、组成与用法分析
Jul 30 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
对python中UDP,socket的使用详解
Aug 22 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
Python中SQLite如何使用
May 27 Python
python中def是做什么的
Jun 10 Python
python实现b站直播自动发送弹幕功能
Feb 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
python中正则表达式与模式匹配
2019/05/07 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
python实现字符串和数字拼接
2020/03/02 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
PHP如何调用MYSQL存储过程
2014/05/30 面试题
《哪吒闹海》教学反思
2014/02/28 职场文书
北体毕业生求职信
2014/02/28 职场文书
公司给客户的感谢信
2015/01/23 职场文书
公司搬迁通知
2015/04/20 职场文书
论语读书笔记
2015/06/26 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers