前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|Pyinstaller打包Python程序的过程详解

Python|Pyinstaller打包Python程序的过程详解

作者头像
double
发布2018-04-02 17:12:44
2.4K0
发布2018-04-02 17:12:44
举报
文章被收录于专栏:算法channel

01

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.

02

安装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安装方法。

03

Pyinstaller打包

打包最重要的一步,也是第一步,梳理程序用到的第三方库有哪些,比如用到了:

numpy,

pandas,

matplotlib

xlrd

一定要确保程序用到的python解释器所在的物理安装路径下,在site-packages文件夹下有了以上这些库,并且要与自己的程序用到的一致。

如果做不好,打包会提示找不到第三方库的引用等。

第二步,将自己的程序代码放到Pyinstaller的源文件根目录下。

第三步,执行以下命令:

pyinstaller yourprogram.py

说明:如果想打包不带命令窗口,前面加参数:

pyinstaller -w -F yourprogram.py

-w: 去掉命令窗口

-F: 打包成一个可执行文件

04

预置的文件如何发布

程序代码中往往使用一些提前预置的文件,比如窗口图片,配置文件等,那么如何将这些文件发布出来呢。

小编使用的方法是将这些文件copy到最终生成的可执行文件目录下,按照自己想要的文件系统组织。

注意这种方法系统中不能出现绝对路径。

05

其他问题

打包过程中,如果出现问题,需要首先知道问题是什么,因此,建议使用命令中不要带有-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的完整打包过程,如有问题或更好的解决方法、建议,请留言!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档