使用Py2Exe for Python3创建自己的exe程序示例


Posted in Python onOctober 31, 2018

最近使用Python 3.5写了一个GUI小程序,于是想将该写好的程序发布成一个exe文件,供自己单独使用。至于通过安装的方式使用该程序,我没有探索,感兴趣的读者可以自己摸索。

1 介绍

我使用的开发环境是python3.4(实际上我是在另一个64位的台式机上,用python3.5开发的,不过代码不用任何修改即可在python3.4上运行),该环境由Anaconda提供。我开发的小GUI软件为mergeDocGui,该程序功能完备,调试通过,等待转成直接使用的exe程序,以在Windows操作系统下使用。它所提供的功能也是与Windows操作系统紧密联系在一起的。

1.1 Py2Exe介绍及其安装

py2exe for Python3 是一个distutils扩展,可以用来创建python3程序的Windows下的可执行程序(32-bit 和 64-bit);它只能支持Python3.3及以后的版本。用它可以创建命令行下的可执行程序、Windows GUI可执行程序、Windows服务和DLL/EXE COM服务器等。

由于Python3的C运行时库,使得我们在利用Py2Exe创建Python3的可执行程序时,不用写manifest文件。

我发现使用Py2Exe正好符合需求。

软件mergeDocGui是在Python3环境下编写的,因此只能安装针对Python3的Py2Exe。Anaconda套件默认没有安装Py2Exe,需要我们手动安装Py2Exe。在Anaconda环境中的Python3中安装Py2Exe使用如下命令即可:

使用Py2Exe for Python3创建自己的exe程序示例

安装成功后,你可使用如下命令,看是否安装成功:

使用Py2Exe for Python3创建自己的exe程序示例

2 创建exe方法

除了常用的创建setup.py方法外,Py2Exe还提供了一个命令行下的工具build_exe,让你不费力地直接创建exe文件。

因为我的程序主要为一个mergeDocGui.py文件,所有使用build_exe即可。根据Py2Exe for Python3提供的build_exe使用帮助,或者你自己通过命令build_exe -h查看帮助,我使用如下命令创建自己的exe文件:

使用Py2Exe for Python3创建自己的exe程序示例

当然,首先要保证Python程序在当前文件夹中。在上图中我们可以看出创建exe文件失败。选项-b表示bundle文件的级别,具体含义请参见帮助。失败原因说的很清楚,需要最小的级别为2,于是我调整bundle文件的级别为2:

使用Py2Exe for Python3创建自己的exe程序示例

我们发现创建成功。立刻在当前文件夹下找到dist文件夹,里面内容如下:

使用Py2Exe for Python3创建自己的exe程序示例

我亟不可待的运行mergeDocGui.exe程序,发现一个不太好的地方,就是总是会带出来一个console背景,如下:

使用Py2Exe for Python3创建自己的exe程序示例

为了解决上述问题,我参阅了py2exe 0.9.2.0的帮助文档。我采用了通常的先编写setup.py脚本的方法:

from distutils.core import setup
import py2exe

setup(windows=['mergeDocGui.py'])

然后再在当前目录下输入一下命令:

使用Py2Exe for Python3创建自己的exe程序示例

最后,我打开dist文件夹中的mergeDocGui.exe,发现附带的console窗口已经消失了。

至于通过build_exe命令如何让console窗口消失,等我闲暇的时候再来探索。

3 总结

本文谈论了py2Exe在python3环境中的安装方法,和如何将自己编写的Gui程序(通过tkinter)转换成可在Windows环境下运行的exe程序。这为非程序员使用程序提供极大的便利。至于程序员,由于是程序员吗,直接面向代码就可以了。

以上这篇使用Py2Exe for Python3创建自己的exe程序示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
python 有效的括号的实现代码示例
Nov 11 Python
基于Python实现扑克牌面试题
Dec 11 Python
Python2与Python3的区别点整理
Dec 12 Python
解决python gdal投影坐标系转换的问题
Jan 17 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
Django-imagekit的使用详解
Jul 06 Python
Django URL参数Template反向解析
Nov 24 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
Oct 31 #Python
python实现多进程代码示例
Oct 31 #Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 #Python
python多进程控制学习小结
Oct 31 #Python
在Python中实现替换字符串中的子串的示例
Oct 31 #Python
python创建文件时去掉非法字符的方法
Oct 31 #Python
python3 中文乱码与默认编码格式设定方法
Oct 31 #Python
You might like
php相当简单的分页类
2008/10/02 PHP
PHP的博客ping服务代码
2012/02/04 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
python中的装饰器详解
2015/04/13 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
社区庆中秋节活动方案
2014/02/07 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
班组建设经验交流材料
2014/05/12 职场文书
保护环境倡议书500字
2014/05/19 职场文书
经销商年会策划方案
2014/05/29 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang