使用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 连连看连接算法
Nov 22 Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
详解Python字典小结
Oct 20 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
如何使用Python自动控制windows桌面
Jul 11 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
python和js交互调用的方法
Jun 23 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
python 实现表情识别
Nov 21 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 Python
10个顶级Python实用库推荐
Mar 04 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
JavaScript 创建对象
2009/07/17 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
vue实现简单瀑布流布局
2020/05/28 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
mac系统安装Python3初体验
2018/01/02 Python
Python模块 _winreg操作注册表
2020/02/05 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
给领导的致歉信范文
2014/01/13 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
2014年学校工作总结
2014/11/20 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
详解TypeScript的基础类型
2022/02/18 Javascript
python playwright之元素定位示例详解
2022/07/23 Python