写在前面
临时作为记录,就先不怎样排版了。
在ubuntu上运行python程序很是方便,但是最终的结果是有产出物给他人使用(这里是我们的编辑),因此需要将py转出exe。
工具
能够使用的工具有几个,pyinstaller,cx_xxxx(忘记怎么写的),py2exe。据说都是可以转成exe,关于工具的区别就不说(其实也不了解,只是看了几篇介绍),还是使用py2exe。
使用
py2exe使用比较简单,但是一些设置只能在win32位上进行,所以不得不换成win32环境。
目标
生成一个独立的可执行文件,并有图标
-难点
-打包设置成独立exe
-适应系统的图标
过程
(1)打包成独立的exe文件
# coding:utf8
from distutils.core import setup
import py2exe
includes = ["encodings","encoding.*"]
options = {"py2exe":{"compressed":1,"optimize":2,
"dll_excludes:["填写需要的dll"]",
"includes":"includes",
"bundle_files":1}}
setup(
options = options,
zipfile = None,
windows = [{"script":"程序本身","icon_resoureces":[(1,"图标路径")]}]
)
在里面需要注意的地方是bundle_files和zipfile的设置。
其中bundle_files有效值为:
3 (默认)不打包。
2 打包,但不打包Python解释器。
1 打包,包括Python解释器。
zipfile的有效值为:
不填(默认) 生成一个library.zip文件
None 把所有东西打包进.exe文件中
注意事项:
为防止不同系统的dll不全而出现问题,最好是在dll_excludes里面将所需的dll添加进去(包括在程序运行成功后,提示的dll.)
(2)程序可以运行,但是图形界面却没有,很是影响心情。下面为程序添加图标。
在网上找了一个方法,测试可行,不过刚开始还真没看明白。
思路是:使用一个ico文件,能够包含其自身所有大小的ico文件,因为win系统为适应不用的视图。
- 准备不同大小的png文件
- 下载png2ico软件
使用软件命令生成一个ico文件
进入到png2ico文件夹下,输入命令 png2ico.exe “你需要的文件”.ico (各种自身png文件)
总结
(1)py2exe可以满足简单的程序打包,但是要使用类似bundle_files参数时候只能在win32位系统上执行,win64位不能执行;
(2)png2ico使用时候,需要进入到其文件目录内,调用png2ico.exe,目录不对就会找不到程序。
(3)当你的程序都很正常,但是生成的exe文件就是没有反应,尝试使用try..except进行异常处理。
参考资料:
(1)http://www.2cto.com/kf/201301/181482.html
(2)http://blog.chinaunix.net/uid-25979788-id-3064613.html
(3)http://blog.sina.com.cn/s/blog_62c832270101d9o2.html
(4)http://justcoding.iteye.com/blog/900993