• pyinstaller打包后程序体积太大,如何解决?


    上周写了个小工具,打包成exe。因为除了写Python的,绝大多数人电脑里都没有Python编译器,所以打包成exe,让用户(windows)双击就可以打开,也算是必备技能了。

    直接用Pyinstaller,打开cmd:

    pyinstaller -F E:\pycharm\huizong\huizong_excel.py

    (-F 是打包成一个文件)

    等了好久,终于完成打包,一看文件,嚯,40M!怪不得打包了这么久...

    上网查了下资料,有人说,pycharm里安装了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。

    有点道理,看到网上说用pipenv可以解决。虽然还不懂pipenv的强大之处,但知道它是个管理虚拟环境和包的工具,于是想着能不能用pipenv来创建一个新的python编译器以运行pyinstaller进行打包。

    于是赶紧上网查了一下,pipenv pyinstaller。并操作如下:
    打开cmd:

    #建立虚拟环境
    pipenv install
    #进入虚拟环境
    pipenv shell
    #安装模块
    pip install 小工具.py里面用到的模块(os,time,shutil,sys等模块不需要安装,也安装不起)
    #打包的模块也要安装
    pip install pyinstaller
    #开始打包
    pyinstaller -F E:\pycharm\huizong\huizong_excel.py
    

    打包完成,一看大小,8M!成功!

    注意:

    关键点就一个:要在虚拟环境里安装pyinstaller

    如果你没有在虚拟环境中安装pyinstaller,你同样可以使用pyinstaller命令,但是调用的是你系统原本的那个python编译器,内含很多关联库,导致即使在虚拟环境中,你打包的exe文件仍然非常大。

    另外一点要注意的是:要在虚拟环境里安装好你py文件中调用的库,不然打包出来也没法正常运行。

    另外还要注意一点:pipenv 安装的虚拟环境是在:C:\Users\Michael.virtualenvs 下,并且在该目录下会默认生产一个文件夹Michael-ov7d_vym来存放你安装的模块。如果,你在文件窗口路径处,输入cmd,打开命令窗口,执行进入虚拟环境命令:pipenv shell。那么在C:\Users\Michael.virtualenvs 下会生产一个文件夹,名称就是路径上的最后一个文件夹名。举例:在E:\pycharm\huizong 的窗口地址栏,输入cmd,再执行pipenv shell,在C:\Users\Michael.virtualenvs 下会生产一个huizong-ttnpT_7h文件夹。
    这当然是有好处的,不同的程序,需要单独安装不同的模块包,再打包的时候,就不用臃肿。

    另外,如果在打包过程中,遇到运行时错误:Permission denied: 'C:\WINDOWS\system32\api-ms-win-crt-stdio-l1-1-0.dll',需要修改cmd的权限,以管理员身份运行。具体操作参考:https://blog.csdn.net/weixin_41357300/article/details/91435327

    参考链接原文:https://www.zhihu.com/question/268397385

  • 相关阅读:
    C#基本知识
    C#集合
    python学习DAY10(异常)
    python学习DAY10(属性方法)
    python学习DAY10(反射)
    python学习DAY10(类方法)
    python学习DAY10(模块)
    基于Servlet构建基础的后台服务器
    时间类型及格式化
    SpringCloud中服务消费者接受前台传参问题(报错415)
  • 原文地址:https://www.cnblogs.com/yuexiao/p/16056734.html
Copyright © 2020-2023  润新知