美文网首页
pyinstaller打包成exe文件踩过的坑

pyinstaller打包成exe文件踩过的坑

作者: 海盗船长_coco | 来源:发表于2019-12-15 14:50 被阅读0次

    最近大作业提交老师一定要将程序打包成exe文件,遇到了很多坑,前前后后差不多弄了一星期。先将遇到的坑记录下来,如果能正好帮到遇到问题的小伙伴,也很开心。

    环境

    pyinstaller版本3.5
    Python版本3.7
    anaconda的虚拟环境

    问题

    1、打包成的exe文件过大
    第一次打包出的exe文件超过1G,由于我之前编写代码时用的是Anaconda创建的虚拟环境,所以代码中一些不用的包也都打包进去。

    第一次打包完的exe文件
    解决方法:网上说的解决方法是安装一个纯净的python环境,但是我使用的方法是用Anaconda重新创了一个虚拟环境,然后这次只安装了本次代码中所需要的包,例如numpy,sklearn,matlib,其他的包全部没有安装。这次打包完文件缩小了很多,是我可以接受的程度,如果你觉得还是太大了,可以参考网上安装纯净环境的方法。
    image.png
    2、打包过程报UTF8错误
    打包过程中报错:UnicodeDecodeError 'utf-8' codec can't decode byte..
    解决方法:输入chcp 65001回车,造成该问题的具体原因也不清楚。
    3、打包完的文件不能运行
    虽然文件打包完,但是发现运行的时候报错(ModuleNotFoundError:No Module named '***')
    报错信息
    解决方法:参考他人的博客,在命令后面添加--hidden-import xxx,所缺的包名
    pyinstaller -F project_2.py -p D:\software\program_software\anaconda\anaconda\envs\myenv\Lib\site-packages --hidden-import sklearn.utils._cython_blas
    

    命令-F表示打包成一个exe文件,-p表示添加搜索路径,让其找到对应的库,由于在第一步中重新创建虚拟环境(myenv),所以命令中-p后面填写新创虚拟环境的目录路径。
    等我将缺失的包import在命令中时,重新打包,然后运行发现又报缺失包的错误(ModuleNotFoundError:No Module named '***')


    image.png

    跟上面方法一样,将缺失的包在命令行中import进来,前前后后差不多缺失了5个包,快弄得我怀疑人生,这也太坑了吧,最终我的打包命令为

    pyinstaller -F project_2.py -p D:\software\program_software\anaconda\anaconda\envs\myenv\Lib\site-packages --hidden-import sklearn.neighbors.typedefs --hidden-import sklearn.utils._cython_blas --hidden-import sklearn.neighbors.quad_tree --hidden-import sklearn.tree --hidden-import sklearn.tree._utils
    

    将所有报错缺失的包全部在命令行中import进来。
    4、使用matlib绘图报QT错误
    经过上面的打包步骤,程序应该能顺利的打包成exe文件,但是如果代码中涉及到matlib绘图的功能,我这边的报错为This application failed to start because it could not find or load the Qt platform plugin "windows"

    exe运行错误
    解决方法:安装qt5,安装命令为pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5

    参考博客

    http://www.freesion.com/article/7014195748/
    https://www.cnblogs.com/BlogOfMr-Leo/p/8552385.html

    相关文章

      网友评论

          本文标题:pyinstaller打包成exe文件踩过的坑

          本文链接:https://www.haomeiwen.com/subject/qsgknctx.html