Tips–解决Python打包成exe文件大启动慢的问题

解决Python打包成exe文件大启动慢的问题

  • 1. 问题描述
  • 2. 产生原因
  • 2. 解决方法
  • 2.1 建立虚拟环境
  • 2.2 安装所需库
  • 2.3 在环境中打包
  • 2.4 附pyinstaller参数表
  • 1. 问题描述

    在日常工作中经常使用Python的小伙伴会经常需要把py文件打包成exe文件给别人使用,这样的好处就是别人不需要安装所需要的python环境和所依赖的库即可运行你的程序。我们通常使用pyinstaller工具来打包成exe可执行文件:

    pyinstaller -F yourFile.py
    

    但是这样打包成的exe非常大,动辄几百M,然后打开之后启动非常慢,30s以上才有反应。这种肯定不利于日常使用,那么造成这个现象的原因是什么?有没有什么方法可以解决这个问题呢?

    2. 产生原因

    造成这个问题的原因在于pyinstaller在打包py文件的时候,并不会智能地把你文件中需要的库打包进去,而是偷懒把当前环境中所有已经安装的库都给你打包进去了,所以我们最后得到的exe文件才会很大,从而导致启动很慢。

    2. 解决方法

    解决方法很简答,我们需要在一个新的虚拟环境中打包就好了。以anaconda为例,它需要三个步骤:1.建立虚拟环境,2.安装py文件所依赖的库,3.利用pyinstaller打包。

    2.1 建立虚拟环境

    使用的anaconda建立虚拟环境的指令:

    conda create -n yourEnvName python=3.6.5
    

    其中yourEnvName 是虚拟环境的名字,python的版本根据号自己的序号来选择。
    建立完环境之后进行激活即可:

    activate yourEnvName 
    

    2.2 安装所需库

    进入到我们建立的环境之后,安装我们所需要的库即可,当然,pyinstaller也是需要安装的:

    pip install pyinstaller
    

    2.3 在环境中打包

    安装完我们工程所需要的库之后,就可以在虚拟环境中打包了:

    pyinstaller -F yourPyFile.py
    

    打包之后我们发现,生成的exe文件的大小变为了几十M(虽然也很大),启动时间缩短为了小于10s(虽然也不短),但比之前的结果好多了。

    2.4 附pyinstaller参数表

    对于pyinstaller工具,其选项参数列表如下所示:

    选项 描述
    -F 生成结果是一个exe程序,所有的第三方依赖库和其他资源都被打包成进该exe程序中
    -D 生成结果是一个包含exe程序的目录,所有第三方依赖库和其他资源和exe程序位于同一目录下
    -i 为生成的程序指定一个icon图标
    -c 显示命令行窗口
    -w 不显示命令行窗口
    -n 指定生成的exe和spec文件名
    -distpath 指定打包后的程序存放目录,默认存放在当前目录下的dist目录
    -workpath 为输出的所有临时文件指定存放目录
    -h 显示帮助信息
    -v 显示版本号

    来源:爱吃骨头的猫、

    物联沃分享整理
    物联沃-IOTWORD物联网 » Tips–解决Python打包成exe文件大启动慢的问题

    发表评论