跳转至

Pyinstaller打包Python程序的过程详解

本文总阅读量次 ,原创教程,严禁转载

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的完整打包过程