通过Py2exe将自己的python程序打包成.exe/.app的方法
windows 10 x64
macos sierra 10.12.4
python 2.7
准备好装哔~了么,来吧,做个真正意义上的绿色小软件
win下发布应用
起因
今天实验室同学看到我的乞丐版二输入规则器,他挺感兴趣的,也想要玩玩,但是他没有装python的环境,总不能让他一直玩我电脑吧,所以想到了将程序打包成exe,直接运行!想法一出来,根本挡不住啊,说干就干,先百度python打包exe,一大堆答案,我整理了一下,大概有py2exe和pyinstaller两种,但是,我给你看张图
这是多久前的产品啊,我屮艸芔茻,如果你执意要用这个请移步,然后自己去玩把,反正我下了之后,根本跑不起来,,,,不信的你可以试试咯
安装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
之后你的命令窗就会跑半分钟左右,跑完之后是这样的;
打包好的tkint.exe已经在该目录下的dist文件夹中了。如果成功,应该多了这两个文件夹
dist里面是这样的
然后你就可以拿去给别的机器测试你的程序啦,哈哈哈哈哈
注意: 在同学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
来查看参数
如果觉得内容不够细致,可以参考
用pyinstaller将python转成可执行文件exe笔记
或者
用pyinstaller把python代码打包成单个独立的exe可执行文件
补充
2016.7.7补坑: 基于python的参考文献生成器beta已完成,欢迎下载和使用免费下载
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,测试通过,最后效果图如下所示
更新
2016.07.06 更新 win下发布应用
2017.07.26 跟新 mac下发布应用