血泪!pyinstaller打包文件过大的解决方法
血泪!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:效果描述
GUI
界面- 完成文件搜索功能(用了深度优先的算法做了一下),指定文件类型(手动或者自动)
- 选择文件夹,目的文件夹
整个demo
的样子就是这个鬼样子:
其实还有另外一种版本,我加了进度条的,但是是cmd
的运行样子所以就不放上来了,进度条好像还挺好看的?
0x04:Pyinstaller打包
0x05:打包过程
- 直接切换到当前代码文件的cmd下运行
pyinstaller -F -w -i icon.ico Program.py
其中-w 是代表在运行exe
的时候不会用DOS
窗口的出现,-i 代表的则是使用图标 Program.py则是你要打包的代码文件 - 如果你打包成功会出现如下:
Succesful
看到这个我们当然很激动了,并且在当前文件夹下你会发现一个dist
和bulid
文件还有用你的代码文件名命名的spec
文件我们打包成功的exe
文件就在dist
文件夹下面,如下所示:
But What!!!
278M这…emm
0x06:重新打包( pipenv )方法
在网上搜索了解决方法,并且亲自尝试了,看网上的各路大神说法貌似是我使用的是anaconda
环境打包了很多不必要的环境,并且在打包的过程成在cmd
窗口下显示的提示信息也证明了我打包了很多的不必要的库,并且再提示一点能够用from 包 import 模块
的方法就最好用这种能够减少很多不必要的内容。
首先如果在
python
中没有pipenv
这个库先进行安装:pip install pipenv
即可然后在想要创建虚拟环境的文件夹中使用
cmd
命令:pipenv install python=3.7
指定安装的python
版本
上图红框为我们如果要在Pycharm
中使用pipenv
虚拟环境的使用的虚拟环境路径,之后会描述。创建好后会在当前文件夹下生成一个
Pipfile
的文件,打开后可以对pipenv
的安装源进行改变,并且使用如pipenv install requests
进行包的安装在使用pipenv install requests
之前要先进入pipenv shell
上图为Pipfiel文件的内容,可以改变url换不同的安装源。并且如果我们不想要这个
pipenv
环境了我们可以使用pipenv --rm
.
pipenv graph
使用这条命名在shell
环境下进行安装的包的依赖环境并利用pip list
查看所安装的包,并且一定要安装pipenv install pyinstaller
毕竟我们实要打包不是。
0x07:在Pycharm中使用( pipenv )环境
经过上面的配置我们已经重新配置好了一个新的干净的python
环境,那么我们在工程中如何引入```Pycharm中呢。
- 打开
Pycharm
中的setting
- 配置虚拟环境
- 找到你得虚拟环境的路径,就是我们在0x05:打包过程说的那个红色框里的路径。
- 并最后在
Scripts
文件中找到python.exe
双击后最后应用到Pycharm
中即可. - 最后重新打包即可.
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打包文件过大的解决方法相关推荐
- Python打包exe程序(pyinstaller)以及打包文件太大的解决方法
编写的python项目,如何在没有python环境的电脑中运行? 打包成exe可执行程序即可 本文章可以教会你如何将python项目打包成exe可执行程序,以及打包后文件太大该如何解决! 来了来了,开 ...
- 解决pyinstaller打包文件过大的问题(Anaconda)
解决pyinstaller打包文件过大的问题(Anaconda) 前言 过程记录 关于pipenv创建的环境路径 前言 参考资料 pyinstaller基本操作 1.环境 anaconda.pycha ...
- 解决Pyinstaller打包文件太大的办法(绝对有效,亲测!!!)
Pyinstaller打包文件太大 1. 问题原因 在Anaconda下打包会将很多没有用到的模块打包进去,最终导致exe文件特别大. 2. 解决方案 通过pipenv建立一个纯净的Python虚拟环 ...
- typora打开pdf文件提示文件过大_Win7/Win10拷贝到U盘容量足够却提示文件过大的解决方法...
前段时间,装机之家分享了系统安装的教程,不过有用户在拷贝系统镜像文件的时候,出现了系统提示文件过大,但是U盘容量足够大,这是什么情况呢?下面装机之家分享的Win7/Win10系统下拷贝到U盘容量足够却 ...
- java去掉mongodb日志_MongoDB日志文件过大的解决方法 清理
MongoDB日志文件过大的解决方法 2016年05月09日 14:43:11 jjwen 阅读数 1261 MongoDB的日志文件在设置 logappend=true 的情况下,会不断向同一日志文 ...
- u盘拷贝显示目标文件过大怎么办-解决方法
u盘拷贝显示目标文件过大怎么办-解决方法 问题:u盘的格式是FAT32格式,需要格式化 1.右键单击u盘 2.点击格式化选项 3.把FAT32(支持的最大单位是4GB)改成NTFS 4.确认就可以了 ...
- 小程序开发过程中,图片过多,导致打包文件太大的解决方式
小程序开发过程中,图片过多,导致打包文件太大 小程序中,除了必须的一些tabbar图片,其他都可以放置在资源服务器上,用url进行引用.不然会因为图片太大使小程序打包后超过2M,不能发行.查了一些资料 ...
- Pyinstaller打包的exe文件过大的解决方法
Pyinstaller打包的exe文件过大怎么办? 相信经常用python的朋友都会面临这么一个问题,那就是想把自己写好的python程序打包给别人使用.有的人就会问了"打包"是什 ...
- webpack打包之后的文件过大的解决方法
以前一直使用create-react-app这个脚手架进行react开发,后面因为一些自定义的配置,转而使用webpack搭建一套自己的脚手架.但是在使用webpack打包之后发现,纳尼?怎么文件这么 ...
最新文章
- maven 打jar包将配置文件,和lib包打在外面
- linux docker nginx,CentOS7上Docker简单安装及nginx部署
- mysql update upper_MySQL数据处理函数upper、abs、date
- 开发人员一定要加入收藏夹的网站(引用)
- 用PHP的CURL写的一个采集Discuz的例子
- js判断时间跨度,以月数为单位
- c++下字符串分割函数split实现
- 分享升级架构师路上的体会,兼说我为什么有挣钱紧迫感
- linux文本编辑器下载,Linux文本编辑器Jed
- iOS开发打包上传报错ERROR ITMS-90096
- Androidx跟Android的区别
- JavaScript学习第十九天
- 利用Pymol计算蛋白质相互作用位点
- Styles.Rende @Scripts.Render 错误
- java转人工智能_[转]人工智能缩略语大全
- 信息管理导论 | 信息组织
- 努比亚红魔6线刷9008救砖刷机教程
- html转pdf中文不显示解决方法
- 知识蒸馏论文阅读:FGD算法笔记
- 文件服务器 s3,AWS S3日志文件通过服务器上传到elk(示例代码)