Python 进阶 (四十七)python3 使用 pyinstaller 实现将 py 文件打包成 exe 文件
一、前言
py
文件通常需要运行在Python
编程坏境中,而可执行exe
文件更方便。
由于之前pyinstaller
不支持python3
。现在pyinstaller
支持python3
,此篇博文即是在python3
环境下实现将 py 文件打包成 exe 文件。
首先介绍一下可以打包Python
代码的工具:
py2exe
: 这个是知名度最高的,但是好像不太适合新手,需要各种库,用起来比较繁琐,不推荐。pyinstaller
: 可以只是生成单独的可执行程序。 最新版本为 3.2.1 Stable, supports Python 2.7, 3.3–3.5。 可以自定义图标。 跨平台,兼容性良好。cx_Freeze
: 这个打包质量挺好,操作也简单。缺点是不能生产单独的可执行文件,结果就是 exe 文件被淹没在众多文件中,看着不高大上。
二、py 文件打包
下面介绍使用pyinstaller
将py
文件打包成exe
文件的具体步骤:
2.1 Step1:下载 pyinstaller
安装成功后,会在Python/Scripts
文件夹下显示名为“pyinstaller.exe”命令文件。
2.2 Step2: 将待打包的 py 文件放到 Python 安装路径的 Scripts 下。
注意 Scripts 放置 Python 的各种第三方扩展包,这里的 pyinstaller.exe 在此处。
2.3 Step3:打包 exe 程序
步骤:
在 cmd 环境进入该 Scripts 文件夹路径下;
输入指令打包:
pyinstaller - F **.py
在实际操作过程中,遇到了“import _win32sysloader ImportError:Dll load failed:找不到指定的模块
”的问题,截图如下:
后来下载了Microsoft Visual C ++ 2010
,之后成功解决问题。
干净的 Windows 7 x86 机器上安装 Python 3.5,然后运行后pip install pyinstaller
,得到了同样的错误。所以我分析_win32sysloader.pyd
依赖关系Dependency Walker
中,有一个依赖于MSVCR100.DLL
文件,该文件是Microsoft Visual C ++ 2010
再发行组件包的一部分。安装该软件包后,PyInstaller 正常工作。
VC++ 2010
安装好之后,在此执行打包命令,此时打包成功。打包时间大约为 1-2 分钟,取决于 py 文件的大小及依赖关系。
打好包之后,会在 Scripts 路径下生成两个文件夹:dist
和build
,如下图所示。
进入 dist 文件,发现生成的文件扩展名为.egg。这又是什么鬼?
经查阅,原来python
的 egg 文件有点像java
中的 jar 文件,是一个工程打包文件,便于安装部署。不知道怎么会生成.egg
文件,尝试重新打包,再次打包发现在dist
目录下生成了exe
文件,具体原因还不知道怎么解释了...
进入 dist 文件,双击生成的 exe 可执行文件,会自动执行程序。
在为可执行文件生成图标时,执行以下语句:
但是在执行过程中,出现了“SRCPATH[..]
”文件未找到及“struct.error: unpack requires a string argument of length 16
”的错误。
首先先介绍一下 ico 文件,这对于理解其解决方案有很大帮助。
ico 文件是 windows 下图片格式,我们看到的文件夹,执行文件等都有不同的图标显示,并且当我们切换视图模式(Thumbnails,Tiles,Icons, List, Details)时,文件的图标会以"不同"尺寸显示,确切的说,应该是不同的图标文件(尺寸亦不同)。ico 文件里面可以有多个不同的图标文件以适应不同的视图模式,并且这些图标文件通常按尺寸大小的顺序存放。以 windows XP/server 2003 下支持的 ico 尺寸为 16x16,32x32 和 48x48。vista/win7 下则最多可以支持 256x256。
问题关键在于 ico 文件中图标的顺序问题,XP 和 server 2003 对顺序要求不高,无论是图标是按尺寸的正序还是倒序都可以正常显示,而然在 vista/win7 下确只能倒序。
如果你使用 png2ico 工具的工具的话,可以使用如下命令生成 myicon.ico 文件:
要提醒的是 png2ico 生成的 ico 文件效果不是太好并且图标文件不能达到 256x256,你不得不选择选择像 248x248 这样的尺寸来代替。推荐一个在线的转换工具 ConvertIcon!,只是 png2ico 可以定义图标的顺序,而 ConvertIcon!则是从小到大的顺序存储图标文件。但另一个 ico 编辑工具可以解决这个问题--Greenfish Icon Editor Pro(点击下载),该工具不仅可以编辑图标文件,而且可以修改图标文件的顺序。
三、Greenfish Icon Editor Pro 生成 icon 图片
详细步骤如下:
首先:打开Greenfish Icon Editor Pro
软件并导入 icon 图片。
点击红色矩形框的 icon 选项->create icon from image 可以设置 ico 图片属性以及生成不同尺寸的 icon 图片,如下图:
有了这张图片可以看出,这些图标文件尺寸大小的顺序[见左侧框]为:1616,3232,4848,6464,256256, 接下来我们要做的就是通过鼠标拖动图片改变这些图片的排列顺序:256256,6464,3232,16*16 ,调整完毕后如下图所示:
接下来保存按钮保存 icon 图片。然后导入该图片,就可以看到能够在 vista/win7 上正常显示了,效果如下图:
以上就是对 python(py2exe)打包成 exe 执行文件,vista/win7 下 icon 图标显示问题的解决方案内容的介绍,望你会有所收获。
四、拓展阅读
更多参数如下图所示:
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/b0bc51908492e7b254fb1e563】。文章转载请联系作者。
评论