使用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使用正则匹配实现抓图代码分享
Apr 02 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
Python csv文件的读写操作实例详解
Nov 19 Python
Python序列类型的打包和解包实例
Dec 21 Python
python对XML文件的操作实现代码
Mar 27 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
pyinstaller打包找不到文件的问题解决
Apr 15 Python
Django实现前台上传并显示图片功能
May 29 Python
基于Python 的语音重采样函数解析
Jul 06 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中常用字符串处理代码片段整理
2011/11/07 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
javascript 快速排序函数代码
2012/05/30 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
python正则表达式抓取成语网站
2013/11/20 Python
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Windows下安装python2.7及科学计算套装
2015/03/05 Python
python网络编程之文件下载实例分析
2015/05/20 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
python实现查找所有程序的安装信息
2020/02/18 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
医院护士专业个人的求职信
2013/12/09 职场文书
党支部书记先进事迹
2014/01/17 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
道德之星事迹材料
2014/05/03 职场文书
初一新生军训方案
2014/05/22 职场文书
银行转正自我鉴定
2014/09/29 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Apache POI的基本使用详解
2021/11/07 Servers
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL