使用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获取指定目录下所有文件名列表的方法
May 20 Python
Python解析最简单的验证码
Jan 07 Python
Python实例一个类背后发生了什么
Feb 09 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
python中日志logging模块的性能及多进程详解
Jul 18 Python
python opencv 图像尺寸变换方法
Apr 02 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
Django 框架模型操作入门教程
Nov 05 Python
Python笔记之观察者模式
Nov 20 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
May 25 Python
Python制作一个随机抽奖小工具的实现
Jul 07 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
Terran兵种介绍
2020/03/14 星际争霸
PHP4和PHP5共存于一系统
2006/11/17 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
PHP的explode和implode的使用说明
2011/07/17 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
Python单链表的简单实现方法
2014/09/23 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
COSETTE官网:奢华,每天
2020/03/22 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
工商企业管理实习自我鉴定
2013/12/04 职场文书
办理居住证介绍信
2014/01/15 职场文书
生日宴会主持词
2014/03/20 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
基层工作经历证明
2015/06/19 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
解析Java异步之call future
2021/06/14 Java/Android
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏