一、安装 pyinstaller

pip install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pyinstaller

二、打包 

pyinstaller -F -w py文件路径

tip:
程序简单,建议使用 -F 模式,优点:封装一个文件,清爽
程序复杂,建议使用 -D 模式,优点:运行速度快
如果想要查看运行信息【程序包含 print 类似语句】,去掉 -w 参数,即显示CMD窗口

       -F -w -D 参数使用参考: 利用pyinstaller打包exe文件

       封装exe小例子: Python selenium —— 将你的自动化脚本打包成一个exe

 pyinstaller 不会将代码运行需要的依赖的数据文件目录或者文件封装起来,它仅仅封装‘代码’,因此封装以后需要将exe依赖的数据目录和文件复制到 exe 的目录下,否则双击exe运行可能失败【cmd一闪而逝,什么没发生】

        封装前:

python 编译exe命令行执行 python编译成exe效率_封装

        使用 pyinstaller -F 封装

python 编译exe命令行执行 python编译成exe效率_封装_02

三、pyinstaller打包exe(64位)和运行太慢等问题解决 

    1、原因:

             搜索 “pyinstaller打包太大”

    2、解决方案

① 使用 anaconda 创建一个新的python环境,这个环境需要仅仅安装待封装project所需要的包,其余不安装并且卸载不需要的包
② 使用pipenv创建新的python环境,思想与anaconda相同
③ 尽量将 import 语句 转化为 from * import

        具体可以看以下文章:

       pyinstaller打包exe(32位和64位)和运行太慢等问题解决     用 Pyinstaller 打包 Python 程序 + 解决打包结果过大的问题

    3、使用 Enigma Virtual Box 封装 pyinstaller -D 模式 多文件【-D 模式运行快】

下载:Enigma Virtual Box
链接:https://pan.baidu.com/s/1qxUCK0H2tOAU2fnUBVlShg 
提取码:3h09
  •           案例: 将 add_logo_text.py 文件进行封装 exe 【cv为批量图片自定义添加文字/水印logo代码】
使用原因:
使用 Enigma Virtual Box 可以将多个文件封装成一个文件,与 pyinstaller -D 不同的是,这种封装后程序运行速度比后者速度要快很
多【若项目复杂 pyinstaller -F 生成的exe文件双击打开cmd会黑屏一段时间】
  •     封装前

python 编译exe命令行执行 python编译成exe效率_python 编译exe命令行执行_03

  •     pyinstaller add_logo_text.py 封装【使用纯净的python环境】

python 编译exe命令行执行 python编译成exe效率_python_04

 

                                         

python 编译exe命令行执行 python编译成exe效率_python_05

             

python 编译exe命令行执行 python编译成exe效率_python_06

  •     使用 Enigma Virtual Box 封装

               第一步: 打开Enigma Virtual Box 选中主exe

python 编译exe命令行执行 python编译成exe效率_封装_07

              第二步: 将除了 主文件exe和上述添加的数据目录 全部选中拖入 Enigma Virtual Box 中

python 编译exe命令行执行 python编译成exe效率_封装_08

  

python 编译exe命令行执行 python编译成exe效率_python 编译exe命令行执行_09

          第三步:打包成功后,退出软件,点击保存 .evb文件 

 

python 编译exe命令行执行 python编译成exe效率_数据目录_10

python 编译exe命令行执行 python编译成exe效率_python_11

 

     保留生成的 exe 文件、.evb文件、依赖的数据目录,其余可以全部删除 ,此时 exe 有 176 M,如果使用 pyinstaller -F 生成

     exe 文件 仅有 66M,但这个exe的运行速度高于后者

 

python 编译exe命令行执行 python编译成exe效率_封装_12