使用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入门篇之对象类型
Oct 17 Python
Python实现堆排序的方法详解
May 03 Python
Python常用算法学习基础教程
Apr 13 Python
python负载均衡的简单实现方法
Feb 04 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
Python socket模块ftp传输文件过程解析
Nov 05 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Python虚拟环境venv用法详解
May 25 Python
如何写python的配置文件
Jun 07 Python
pytorch 中forward 的用法与解释说明
Feb 26 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中利用XML技术构造远程服务(下)
2006/10/09 PHP
第十四节 命名空间 [14]
2006/10/09 PHP
PHP 数组入门教程小结
2009/05/20 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
Python探索之pLSA实现代码
2017/10/25 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
详解【python】str与json类型转换
2019/04/29 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
中国梦的演讲稿
2014/01/08 职场文书
会计自我鉴定
2014/02/04 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
乳制品整治工作方案
2014/05/29 职场文书
人与自然观后感
2015/06/16 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书