Python打包exe程序(pyinstaller)以及打包文件太大的解决方法

编写的python项目,如何在没有python环境的电脑中运行?

打包成exe可执行程序即可

本文章可以教会你如何将python项目打包成exe可执行程序,以及打包后文件太大该如何解决!

来了来了,开始操作

首先,你需要安装一个库

这个库叫啥呢,就叫“pyinstaller”,项目都能写出来,怎么安装库应该不需要我多说了吧?

pip install pyinstaller

想到可能会有新手,新手请看👆👆👆

老手请自觉跳过

安装好库了,那么打包命令是啥呢?

👇👇👇

pyinstaller -i 123.ico -F -w main.py
  • 尽量把打包后的文件放在英文目录下。
  • 多个.py文件打包为单一文件时,即pyinstaller 命令中加入了-F,也是有可能会导致错误的。可以不使用-F。
  • 解释一下常用到的参数:

    main.py :是你的python项目文件

    -i :为main.exe文件指定的图标(如果没有,则不需要该参数)

    123.ico :生成.exe文件的图标推荐一个在线转换ico图标的网址

    -F :生成结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内

    -w :不显示命令行窗口(如不用此参数,打包后的程序在运行时会弹出一个命令行窗口,我个人一般是不喜欢它弹出这个命令行窗口的,除非打包后出现问题,后面会讲到)

    来个表格:

    参数名 描述 说明
    -i 为main.exe指定图标 pyinstaller -i 123.ico main.py
    -w 不显示命令行窗口 编写GUI程序时使用此参数有用。
    -c 显示命令行窗口 与-w相反,默认含有此参数
    -F 生成one-file的程序 生成结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内
    -y 如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖 默认:询问是否覆盖
    -p 指定额外的import路径,类似于使用PYTHONPATH 参见PYTHONPATH

    上面表格中的参数中,前三个为WindowsMac特有的参数,后三个为与生成结果有关的参数 and 通用参数

    打包后,exe程序在当前目录下的dist文件夹中,自行去找哈

    接下来说一说刚刚提到的命令行窗口,如果你使用了上面的命令打包后发现,程序打不开😕😕😕 

    别慌,看这👇

    (文字有点点多,慢慢看,如果没有遇到这个问题可以先跳过这部分,以后遇到了再回来看)

    首先你需要更改一下命令重新进行打包,怎么更改呢?前面我提到过一个命令行窗口,把打包命令中的-w删掉,再运行命令打包,打包好之后,就需要考验你的反应能力了,此话怎样呢,因为弹出来的命令行窗口只会停留一会儿。这时候,你可以准备截图(微信,qq,电脑自带等很多方式可以截图),在弹出命令行窗口运行出错误后进行截图。然后就是找问题所在了。

    emmm,,,比如说这个👇

    有句话ImportError:OpenCV loader:missing configuration file:['config.py']. Check OpenCV installation.啥意思呢,简单来说,缺少了相对应的库,这里是OpenCV库。

    这时候需要在打包时指定 -p 参数,后面跟上 python 目录下的第三方库模板目录路径 site-packages ,再打包就成功了。

    pyinstaller -i 123.ico -F -w main.py -p C:/python/lib/site-packages

    解决后如果没有问题那就恭喜你,打包完成!

    然而你会发现,有些项目在打包exe程序后的文件大小会非常大,比如说这个:

    这种情况,请往下看

    先看看效果怎样:

    可以看到,打包前和打包后的大小差距有多大。

    我用的方法:使用pipenv缩小exe

    废话不多说,直接看操作步骤:

    1、安装pipenv

    与安装其他python库一样,在cmd环境下安装:

    pip install pipenv

    2、安装完成后,随便找一个盘符,在这个盘符的根目录(最好是根目录)新建一个文件夹,作为虚拟环境,然后双击进入该文件夹

    3、在虚拟环境下安装python,例如:

    pipenv install -python 3.6

    在这里就有可能遇到第一个坑了,系统有可能提示无法转换为 “utf-8”,具体原因是因为中文转码的问题,但是不必深究。这时候最好的方法是重启电脑,对是的,重启电脑,然后不要打开任何其他程序,重复上述第2步

    4、在命令行下激活虚拟环境

    pipenv shell

    在这里,可能又会遇到刚刚第3步中的问题,系统提示无法转换为“utf-8”,没有办法,再次重启电脑吧,然后重新进入power shell,再尝试运行 pipenv shell

    5、安装需要的库(仅需安装需要打包的.py文件中所用到的库)

    根据要打包的程序中导入的库,在pipenv环境下重新安装,例如:

    pipenv install pyinstaller
    pipenv install removebg

    6、把py脚本文件复制到这个新建的目录下,重新运行 pyinstaller,方法、参数等同以往一样就OK

     dddd(懂的都懂),好了,问题解决。

    如果这篇文章对你有帮助,关注点赞收藏呗😉🤩

    来源:蜡笔小新星

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python打包exe程序(pyinstaller)以及打包文件太大的解决方法

    发表评论