Pyinstaller打包Python程序的过程详解
1 Pyinstaller是什么
PyInstaller is a program that freezes (packages) Python programs into stand-alone executables, under Windows, Linux, Mac OS X, FreeBSD, Solaris and AIX.
Pyinstaller相比于同类的优势:
1)支持Python2.7, Python 3.3-3.6
2)生成的可执行文件字节数更小
3)对第三方包的支持非常好,只需要将它们放到python的解释器对应的文件夹中,Pyinstaller便可自动打包到最终生成的可执行文件中。
As an example, libraries like PyQt, Django or matplotlib are fully supported, without having to handle plugins or external data files manually. Check our compatibility list of Supported Packages for details.
2 安装Pyinstaller
Install PyInstaller from PyPI:
pip install pyinstaller
以上是官网给出的安装方式,pip安装会更简捷,因为它会自动安装pyinstaller的第三方库地依赖。
但, 小编在安装时,不是走的这种方式,而是下载Pyinstaller的源文件,http://www.pyinstaller.org/downloads.html,命令行界面中cd到Pyinstaller的目录下,执行
python seteup.py install
应用这种方式的需要自行先下载安装pywin32库,需要注意它的版本一定要与python的版本一致,两方面:
1)python版本,
2)python是32位还是64位
如果pywin32的版本与python不一致,不会安装成功。
总结,安装Pyinstaller推荐使用pip安装方法。
3 Pyinstaller打包
打包最重要的一步,也是第一步,梳理程序用到的第三方库有哪些,比如用到了:
numpy,
pandas,
matplotlib
xlrd
一定要确保程序用到的python解释器所在的物理安装路径下,在site-packages文件夹下有了以上这些库,并且要与自己的程序用到的一致。
如果做不好,打包会提示找不到第三方库的引用等。
第二步,将自己的程序代码放到Pyinstaller的源文件根目录下。
第三步,执行以下命令:
pyinstaller yourprogram.py
说明:如果想打包不带命令窗口,前面加参数:
pyinstaller -w -F yourprogram.py
-w: 去掉命令窗口
-F: 打包成一个可执行文件
4 预置的文件如何发布
程序代码中往往使用一些提前预置的文件,比如窗口图片,配置文件等,那么如何将这些文件发布出来呢。
小编使用的方法是将这些文件copy到最终生成的可执行文件目录下,按照自己想要的文件系统组织。
注意这种方法系统中不能出现绝对路径。
5 其他问题
打包过程中,如果出现问题,需要首先知道问题是什么,因此,建议使用命令中不要带有-w,这样可以看到命令窗口中的错误,等完全测试好了后,再添加-w
遇到的一个问题:
解决方法:
在Python解释器文件目录 Python36-32\Lib\site-packages\PyInstaller-3.3+4e8e0ff7a-py3.6.egg\PyInstaller\hooks下添加一个hook-pandas.py文件:
hiddenimports=[
#all your previous hidden imports
'pandas', 'pandas._libs.tslibs.timedeltas'
]
以上便是Pyinstaller的完整打包过程