通过Py2exe将自己的python程序打包成.exe/.app的方法


Posted in Python onMay 26, 2018

Windows 10 x64

macOS Sierra 10.12.4

Python 2.7

准备好装哔~了么,来吧,做个真正意义上的绿色小软件

Win下发布应用

起因

今天实验室同学看到我的乞丐版二输入规则器,他挺感兴趣的,也想要玩玩,但是他没有装python的环境,总不能让他一直玩我电脑吧,所以想到了将程序打包成exe,直接运行!想法一出来,根本挡不住啊,说干就干,先百度python打包exe,一大堆答案,我整理了一下,大概有Py2exe和pyinstaller两种,但是,我给你看张图

通过Py2exe将自己的python程序打包成.exe/.app的方法 

这是多久前的产品啊,我屮???,如果你执意要用这个请移步,然后自己去玩把,反正我下了之后,根本跑不起来,,,,不信的你可以试试咯py2exe官方下载

安装pyinstaller

安装方法

方法一:使用pip install pyinstaller,也可以参考: python如何安装第三方包,

方法二:如果是下载github上的包之后手动安装,那么步骤是

打开cmd,切到pyinstaller解压包目录,我直接放在c盘目录下了,所以我的操作是

cd C:\pyinstaller-develop

安装pyinstaller,我的操作是

进目录后输入python setup.py install

包下载

亲测可用:Pyinstaller下载地址,GitHub版本,亲测可用

备用地址不:Pyinstaller官网下载地址,我没试过,应该也行

程序打包

先将需要打包的程序,我用自己的Tkint.py文件(自己python文件名字自己修改),把它复制到步骤1的目录下,也就是上面的C:\pyinstaller-develop然后使用命令:pyinstaller -F Tkint.py(建议使用)

注意:如果运行的是gui类型程序,你不需要弹出命令窗口,你可以采用:pyinstaller -F -w文件名.py
之后你的命令窗就会跑半分钟左右,跑完之后是这样的;

通过Py2exe将自己的python程序打包成.exe/.app的方法

打包好的Tkint.exe已经在该目录下的dist文件夹中了。如果成功,应该多了这两个文件夹

通过Py2exe将自己的python程序打包成.exe/.app的方法

dist里面是这样的
通过Py2exe将自己的python程序打包成.exe/.app的方法

然后你就可以拿去给别的机器测试你的程序啦,哈哈哈哈哈

注意: 在同学win8/win10,64位机器上可以运行,win7 x64和其余所有32位亲测失败,会提示不兼容,所以说,如果要32/64通吃,就要在python 32位环境下(不是win32位)编译打包exe,才能在32/64成功。

BTW

但是,如果你使用pyinstaller -F -w文件名.py在别的电脑运行你的exe文件时候你看不到命令窗口,你会认为程序没有运行,打包后的exe比较大,以我的Tkint.py来说,160行的程序,打包后61MB,额,我直接插在U盘上在别的电脑运行,大概需要半分钟左右才能跑起来,所以请慢慢等待。。。。如果你还要改图标,创建目录啥的,请使用pyinstaller -h来查看参数

通过Py2exe将自己的python程序打包成.exe/.app的方法

如果觉得内容不够细致,可以参考

或者

2016.7.8补充: 利用Pyinstaller编译关联文件成exe,只要输入时候写成pyinstaller -F main.py related.py即可,其中main为主函数,其中有import related.py的函数,只要把重要的放前面就好啦,然后最后的exe文件名会以第一个命名,也就是最后形成一个main.exe就是酱紫。修改spec文件,重新加上参数再编译。按照正常步骤做过之后,在目录中还会有一个spec文件,用编辑器打开,之后修改参数,保存后,在原来操作的cmd上写入:pyinstaller main.spec即可,这个是我在gui图像生成exe格式时候,图片无法打包查阅到的,需要单独添加

Mac下发布应用

安装py2app

pip install py2app

或者手动下载安装点这里

打包程序
首先在桌面新建一个文件夹,我这里名字为transapp,然后把要打包的程序放在里面,我这里要打包的是translate.py文件,自己的文件夹和文件名字自己响应替换

进入终端,切路径至该文件夹下

cd ~/Desktop/transapp

开始产生初始化文件

py2applet --make-setup translate.py

保险起见,清除以前产生的build和dist文件夹,第一次操作这两个文件夹是没有的

rm -rf build dist

开始打包应用

python setup.py py2app

这时候会开始执行打包过程,最后大概是这样的

...
Modules not found (conditional imports):
 * _md5 (hashlib)
 * _sha (hashlib)
 * _sha256 (hashlib)
 * _sha512 (hashlib)
 * com (pkg_resources._vendor.appdirs)
 * com.sun.jna (pkg_resources._vendor.appdirs)
 * com.sun.jna.platform (pkg_resources._vendor.appdirs)
 * riscospath (os)
 * win32com (pkg_resources._vendor.appdirs)
 * win32com.shell (pkg_resources._vendor.appdirs)

Done!

找到自己的文件夹,然后里面应该有dist文件夹,打开后里面有个app,双击即可。
测试时候, py2app版本0.14,macos版本10.12.14,测试通过,最后效果图如下所示

通过Py2exe将自己的python程序打包成.exe/.app的方法

更新

2016.07.06 更新 win下发布应用
2017.07.26 跟新 mac下发布应用

Python 相关文章推荐
python paramiko实现ssh远程访问的方法
Dec 03 Python
Python+Opencv识别两张相似图片
Mar 23 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
python 寻找离散序列极值点的方法
Jul 10 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
Python selenium爬取微博数据代码实例
May 22 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
七个Python必备的GUI库
Apr 27 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 #Python
Python多重继承的方法解析执行顺序实例分析
May 26 #Python
Python多继承顺序实例分析
May 26 #Python
Python装饰器用法实例总结
May 26 #Python
python 脚本生成随机 字母 + 数字密码功能
May 26 #Python
Python高级用法总结
May 26 #Python
关于Python的一些学习总结
May 25 #Python
You might like
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
通过实例解析js简易模块加载器
2019/06/17 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python函数嵌套实例
2014/09/23 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
flask中过滤器的使用详解
2018/08/01 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
python爬虫 正则表达式解析
2019/09/28 Python
python与mysql数据库交互的实现
2020/01/06 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
类和结构的区别
2012/08/15 面试题
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
中国梦的演讲稿
2014/01/08 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
《春晓》教学反思
2014/04/20 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书