血泪!pyinstaller打包文件过大的解决方法

记录一下踩的坑吧,都是血泪!


文章虽然水平不高,但是还是希望能够对大家有帮助

文章目录

  • 血泪!pyinstaller打包文件过大的解决方法
    • 0x01:源头
    • 0x02:题目描述
      • 0x03:效果描述
    • 0x04:Pyinstaller打包
      • 0x05:打包过程
      • 0x06:重新打包( pipenv )方法
      • 0x07:在Pycharm中使用( pipenv )环境
    • 0x08:查看最后重新打包的文件大小
    • 0x09:参考目录

0x01:源头

最近因为课程原因简单做了一个GUI界面,因为老师要求课堂上进行展示,但是教学的电脑上并没有python环境,所以想到了要利用pyinstaller进行打包,让其成为exe可运行程序,应付作业,emmm…哈哈哈嗝~

0x02:题目描述

整个作业的内容是将一个文件从一个文件夹移动到另一个文件夹,作业本身没啥难度,直接使用python内置的shutil模块便可以一行搞定,但是奈何需要进行演示,然后自己又稍微增加了一点东西,做成了GUI界面。

0x03:效果描述

  1. GUI界面
  2. 完成文件搜索功能(用了深度优先的算法做了一下),指定文件类型(手动或者自动)
  3. 选择文件夹,目的文件夹

整个demo的样子就是这个鬼样子:

其实还有另外一种版本,我加了进度条的,但是是cmd的运行样子所以就不放上来了,进度条好像还挺好看的?

0x04:Pyinstaller打包

0x05:打包过程

  1. 直接切换到当前代码文件的cmd下运行pyinstaller -F -w -i icon.ico Program.py其中-w 是代表在运行exe的时候不会用DOS窗口的出现,-i 代表的则是使用图标 Program.py则是你要打包的代码文件
  2. 如果你打包成功会出现如下:
    Succesful看到这个我们当然很激动了,并且在当前文件夹下你会发现一个distbulid文件还有用你的代码文件名命名的spec文件我们打包成功的exe文件就在dist文件夹下面,如下所示:

    But What!!!

    278M这…emm

0x06:重新打包( pipenv )方法

在网上搜索了解决方法,并且亲自尝试了,看网上的各路大神说法貌似是我使用的是anaconda环境打包了很多不必要的环境,并且在打包的过程成在cmd窗口下显示的提示信息也证明了我打包了很多的不必要的库,并且再提示一点能够用from 包 import 模块的方法就最好用这种能够减少很多不必要的内容。

  1. 首先如果在python中没有pipenv这个库先进行安装:pip install pipenv即可

  2. 然后在想要创建虚拟环境的文件夹中使用cmd命令:pipenv install python=3.7指定安装的python版本

    上图红框为我们如果要在Pycharm中使用pipenv虚拟环境的使用的虚拟环境路径,之后会描述。

  3. 创建好后会在当前文件夹下生成一个Pipfile的文件,打开后可以对pipenv的安装源进行改变,并且使用如pipenv install requests进行包的安装在使用pipenv install requests之前要先进入pipenv shell

    上图为Pipfiel文件的内容,可以改变url换不同的安装源。

  4. 并且如果我们不想要这个pipenv环境了我们可以使用pipenv --rm

  5. .pipenv graph使用这条命名在shell环境下进行安装的包的依赖环境并利用pip list查看所安装的包,并且一定要安装pipenv install pyinstaller毕竟我们实要打包不是。

0x07:在Pycharm中使用( pipenv )环境

经过上面的配置我们已经重新配置好了一个新的干净的python环境,那么我们在工程中如何引入```Pycharm中呢。

  1. 打开Pycharm中的setting
  2. 配置虚拟环境
  3. 找到你得虚拟环境的路径,就是我们在0x05:打包过程说的那个红色框里的路径。
  4. 并最后在Scripts文件中找到python.exe双击后最后应用到Pycharm中即可.
  5. 最后重新打包即可.

0x08:查看最后重新打包的文件大小

最后一看
8M多,虽然还是不小,但是应付作业应该还可以了emmm…我觉得

0x09:参考目录

[1] PyKK2019. Python虚拟环境和包管理工具Pipenv的使用详解–看完这一篇就够了[A/OL].(2019-04-28)[2019-04-28]. https://blog.csdn.net/weixin_41133061/article/details/8964720
[2] Hanniel. Pipenv使用入门 [A/OL].(2019-06-30)[2019-06-30]. https://blog.csdn.net/Hanniel/article/details/94294155
[3] 伍仔是牛仔. 解决pyinstaller打包exe文件过大(菜鸟一刀切傻办法)[A/OL].(2020-05-02)[2020-05-02]. https://blog.csdn.net/wuzaishiniuzai/article/details/105895715

血泪!pyinstaller打包文件过大的解决方法相关推荐

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

    编写的python项目,如何在没有python环境的电脑中运行? 打包成exe可执行程序即可 本文章可以教会你如何将python项目打包成exe可执行程序,以及打包后文件太大该如何解决! 来了来了,开 ...

  2. 解决pyinstaller打包文件过大的问题(Anaconda)

    解决pyinstaller打包文件过大的问题(Anaconda) 前言 过程记录 关于pipenv创建的环境路径 前言 参考资料 pyinstaller基本操作 1.环境 anaconda.pycha ...

  3. 解决Pyinstaller打包文件太大的办法(绝对有效,亲测!!!)

    Pyinstaller打包文件太大 1. 问题原因 在Anaconda下打包会将很多没有用到的模块打包进去,最终导致exe文件特别大. 2. 解决方案 通过pipenv建立一个纯净的Python虚拟环 ...

  4. typora打开pdf文件提示文件过大_Win7/Win10拷贝到U盘容量足够却提示文件过大的解决方法...

    前段时间,装机之家分享了系统安装的教程,不过有用户在拷贝系统镜像文件的时候,出现了系统提示文件过大,但是U盘容量足够大,这是什么情况呢?下面装机之家分享的Win7/Win10系统下拷贝到U盘容量足够却 ...

  5. java去掉mongodb日志_MongoDB日志文件过大的解决方法 清理

    MongoDB日志文件过大的解决方法 2016年05月09日 14:43:11 jjwen 阅读数 1261 MongoDB的日志文件在设置 logappend=true 的情况下,会不断向同一日志文 ...

  6. u盘拷贝显示目标文件过大怎么办-解决方法

    u盘拷贝显示目标文件过大怎么办-解决方法 问题:u盘的格式是FAT32格式,需要格式化 1.右键单击u盘 2.点击格式化选项 3.把FAT32(支持的最大单位是4GB)改成NTFS 4.确认就可以了 ...

  7. 小程序开发过程中,图片过多,导致打包文件太大的解决方式

    小程序开发过程中,图片过多,导致打包文件太大 小程序中,除了必须的一些tabbar图片,其他都可以放置在资源服务器上,用url进行引用.不然会因为图片太大使小程序打包后超过2M,不能发行.查了一些资料 ...

  8. Pyinstaller打包的exe文件过大的解决方法

    Pyinstaller打包的exe文件过大怎么办? 相信经常用python的朋友都会面临这么一个问题,那就是想把自己写好的python程序打包给别人使用.有的人就会问了"打包"是什 ...

  9. webpack打包之后的文件过大的解决方法

    以前一直使用create-react-app这个脚手架进行react开发,后面因为一些自定义的配置,转而使用webpack搭建一套自己的脚手架.但是在使用webpack打包之后发现,纳尼?怎么文件这么 ...

最新文章

  1. maven 打jar包将配置文件,和lib包打在外面
  2. linux docker nginx,CentOS7上Docker简单安装及nginx部署
  3. mysql update upper_MySQL数据处理函数upper、abs、date
  4. 开发人员一定要加入收藏夹的网站(引用)
  5. 用PHP的CURL写的一个采集Discuz的例子
  6. js判断时间跨度,以月数为单位
  7. c++下字符串分割函数split实现
  8. 分享升级架构师路上的体会,兼说我为什么有挣钱紧迫感
  9. linux文本编辑器下载,Linux文本编辑器Jed
  10. iOS开发打包上传报错ERROR ITMS-90096
  11. Androidx跟Android的区别
  12. JavaScript学习第十九天
  13. 利用Pymol计算蛋白质相互作用位点
  14. Styles.Rende @Scripts.Render 错误
  15. java转人工智能_[转]人工智能缩略语大全
  16. 信息管理导论 | 信息组织
  17. 努比亚红魔6线刷9008救砖刷机教程
  18. html转pdf中文不显示解决方法
  19. 知识蒸馏论文阅读:FGD算法笔记
  20. 文件服务器 s3,AWS S3日志文件通过服务器上传到elk(示例代码)

热门文章

  1. WPF 触发器Triggers
  2. 走出abstract class与interface的困惑
  3. Python从入门到精通— 初识Python
  4. 弗里曼(Freeman)链码
  5. Unity3D 安装
  6. 论 Erda 的安全之道
  7. python语言属于机器语言汇编语言高级语言自然语言_机器语言,汇编语言,高级语言的主要特点及区别是什么...
  8. OPENGL颜色混合
  9. vmware设置共享文件夹
  10. LL教你入侵网站(算是吧)--对于天津理工教务处网站找回密码方案的建议