使用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的面向对象思想分析
Jan 14 Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 Python
python SMTP实现发送带附件电子邮件
May 22 Python
解决python中无法自动补全代码的问题
Dec 04 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
基于pytorch的lstm参数使用详解
Jan 14 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
python 的topk算法实例
Apr 02 Python
如何在python中判断变量的类型
Jul 29 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 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 curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
Python计算已经过去多少个周末的方法
2015/07/25 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
zooplus波兰:在线宠物店
2019/07/21 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
服装机修工岗位职责
2013/12/26 职场文书
党校个人总结
2015/03/04 职场文书
python中subplot大小的设置步骤
2021/06/28 Python
Python类方法总结讲解
2021/07/26 Python
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript