使用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 相关文章推荐
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
python统计一个文本中重复行数的方法
Nov 19 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
Python面向对象进阶学习
May 21 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
Python tempfile模块生成临时文件和临时目录
Sep 30 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 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基于工厂模式实现的计算器实例
2015/07/16 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
js仿360开机效果
2019/12/26 Javascript
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python解析nginx日志文件
2015/05/11 Python
python数据结构之列表和元组的详解
2017/09/23 Python
python 产生token及token验证的方法
2018/12/26 Python
python实现动态数组的示例代码
2019/07/15 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
售后主管岗位职责
2013/12/08 职场文书
车间操作工岗位职责
2013/12/19 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
情况说明书格式及范文
2019/06/24 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers