通过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 list转dict示例分享
Jan 28 Python
老生常谈Python基础之字符编码
Jun 14 Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
Python列表解析配合if else的方法
Jun 23 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
详解python中的装饰器
Jul 10 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
python datetime时间格式的相互转换问题
Jun 11 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 Python
python实现自动化群控的步骤
Apr 11 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
PHP安全技术之 实现php基本安全
2010/09/04 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
js友好的时间返回函数
2016/08/24 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
利用js判断手机是否安装某个app的多种方案
2017/02/13 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
vue实现循环切换动画
2018/10/17 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
python写入xml文件的方法
2015/05/08 Python
Django中使用group_by的方法
2015/05/26 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
Python如何实现FTP功能
2020/05/28 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
数控专业自荐书范文
2014/03/16 职场文书
实践论读书笔记
2015/06/29 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python