用Python的pyinstaller打包一朵花过程中遇到的天坑。

Python用pyinstaller打包第三方库

前言

1.环境:python3.6;
2.程序所涉及第三方库matplotlib等;

一、pyinstaller介绍

1)作用

1)pyinstaller能将python程序转换成单个可执行文件(.exe);
2)操作系统支持Windows, Linux, Mac OS X,Solaris和AIX。并且很多包都支持开箱即用,不依赖环境;

2)安装方法

在cmd里pip install pyinstaller

3)pyinstaller参数介绍

  1. -F:打包生成单个文件;
  2. -w:让exe运行过程中不显示控制台;
  3. -i:为exe程序添加图标;
  4. -D:打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码;
    其余参数自行网上了解

4)使用方法

1.标准:
注意是在cmd中使用

pyinstaller -F -w -i C:\Users\lenovo\Desktop\flower\flower.ico C:\Users\lenovo\Desktop\flower\flower.py

2.说明:
[1]这里使用了绝对路径打包flower.ico和flower.py两个文件。其中flower.ico是配合-i参数的,是用于生成exe的图标。而flower.py是需要打包的python程序;嫌麻烦不想添加图标去掉-i参数和第一个路径亦可正常打包。
[2]当cmd的路径是与.ico和.py文件处于一个文件夹中时,可以不需要使用绝对路径,直接用相对路径即可;

pyinstaller -F -w -i flower.ico flower.py

[3]注意,打包后生成的几个文件夹会生成在cmd当前路径下。

5)泣血,使用中遇到的天坑

  1. 问题一:打开cmd后使用默认路径直接打包,会报错。原因不清楚,但有解决办法;
    用Python的pyinstaller打包一朵花过程中遇到的天坑。
    使用默认路径会报错
    解决办法:创建一个文件夹,放入待打包.ico和.py文件,cmd中路径切换到该文件夹下再打包;
    用Python的pyinstaller打包一朵花过程中遇到的天坑。
    2.问题二:打包成功后exe文件运行失败。原因是程序中使用了其它第三方库,没有打包其运行需要的相应module。
    解决办法:再pyinstaller打包过程中,仔细阅读info、error、warning等信息,缺少哪个module就去pip安装哪个;
    eg:这朵花是使用matplotlib花的,打包后提示缺少相关的PyQt4和PySide等等module;
    我就使用pip指令安装这些modlue。但是pip安装失败了
    原因是Python中最头疼的包版本和python版本的不匹配问题。
    PyQt4和PySide与我的python3.6不匹配,于是通过安装PyQt5PySide2替代解决了,也没有
    报错;
    3.问题三:由于exe可能会运行失败,建议调试时不要使用-w参数隐藏控制台,这样会导致看不见报错信息。但是报错信息可能会一闪而过
    解决办法:在cmd中打开此exe程序,报错信息就不会一闪而过。
  2. 问题四:-w参数使用失败,去掉-w参数却能打包成功。俺嫌麻烦,没试。不带-w参数解决了问题。。。。。。。
    解决办法:链接

二、代码

知乎上看见的,觉得有意思自己实践了一下。
源码链接

三、运行结果

用Python的pyinstaller打包一朵花过程中遇到的天坑。
用Python的pyinstaller打包一朵花过程中遇到的天坑。

上一篇:5.最长公共前缀


下一篇:从匈牙利算法到带权带花树——详解对偶问题在图匹配上的应用