使用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列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
python递归计算N!的方法
May 05 Python
Python中static相关知识小结
Jan 02 Python
Python 加密与解密小结
Dec 06 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
浅析Python requests 模块
Oct 09 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常用技巧总结(附函数代码)
2012/02/04 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
理解python中生成器用法
2017/12/20 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
Python 学习教程之networkx
2019/04/15 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
Python如何使用input函数获取输入
2020/08/06 Python
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
毕业生就业协议书
2014/04/11 职场文书
生物技术专业求职信
2014/06/10 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL