解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
最近写一个小脚本,源代码200多行,引入了 openpyxl、requests库,写完打包exe之后居然有64MB的大小,真是奇了葩了。网上查找各位大神的做法,自己又动手填了N个坑之后,总算找到缩小exe文件的方法了,这种方法必须使用到pipenv,详细记录如下:
1、安装pipenv
就像安装其他python库一样,在cmd环境下安装:
pip install pipenv
2、安装完成后,随便找一个盘符,在这个盘符的根目录(最好是根目录)新建一个文件夹,作为虚拟环境,然后双击进入该文件夹
3、进入命令行,按住shift键,鼠标右键点击,在菜单中找到 power shell,点击进入
4、在虚拟环境下安装python,例如:
pipenv install --python 3.6
在这里就有可能遇到第一个坑了,系统有可能提示无法转换为 “utf-8”,具体原因是因为中文转码的问题,但是不必深究。这时候最好的方法是重启电脑,对是的,重启电脑,然后不要打开任何其他程序,重复上述第2步、第3步
5、在命令行下激活虚拟环境
pipenv shell
在这里,可能又会遇到刚刚第4步中的问题,系统提示无法转换为“utf-8”,没有办法,再次重启电脑吧,然后重新进入power shell,再尝试运行 pipenv shell
6、安装需要的库
这时候,根据要打包的程序中导入的库,在pipenv环境下重新安装
pipenv install pyinstaller
pipenv install openpyxl
pipenv install requests
安装过程会比较慢,耐心等候就是了。
7、把py脚本文件复制到这个新建的目录下,重新运行 pyinstaller,方法、参数等同以往一样就OK啦。
最后,在pipenv环境下打包完的程序,就只有6.6MB的大小,虽然对于一个200多行代码的脚本来说,看起来还是有点大,但是相比前一个版本,已经缩小了近1/10,勉强可以接受了。
补充知识:python工具pyinstaller打包生成exe文件非常大的原因分析(openpyxl)openpyxl
【python】python的打包工具pyinstaller生成exe非常大的原因分析(openpyxl)openpyxl
-F 打包出来 一个一个都有200多M
from tkinter import * from tkinter.font import Font from email.mime.text import MIMEText from email.header import Header import tkinter import tkinter.messagebox import tkinter.simpledialog import tkinter.filedialog import openpyxl import smtplib import threading print(3*2)
每次删掉一行,打包一个一个个包进行测试。发现有的包打出来没什么影响。
发现有一个包异常,只要有这个包,就是特别大---openpyxl
打包时间也特别长
检查日志:发现openpyxl 与 pandas numpy有关。
单独将代码提出,用两种方法调用,发现没什么卵用。
from openpyxl import load_workbook #import openpyxl workbook = openpyxl.load_workbook('data.xlsx')
都还是200多m
PyInstaller very big file size win7(64bit) anaconda ( 3 ) python(3.6) pyinstaller (3.4.dev0+469f1fa19) openpyxl (2.4.8) I've made simple code like this: ------code------------------------------------------ #import openpyxl workbook = openpyxl.load_workbook('data.xlsx') ------code------------------------------------------ File size (python files) is 1.0 KB. But when I create executable using PyInstaller, I get 200 MB file! About openpyxl..... Why the generated files are so big? Is there a way to decrease file size"" src="/UploadFiles/2021-04-08/20200713141551.jpg">装好后,继续用pip 把 pypiwin32 装好。这里有个坑:
要用 pip install pypiwin32, 而不是 pip install pywin32.
装好后,按照一个不知名的方法,建议把这个 openxyl 解压到pyinstall 的根目录。等下要用。(好像有用)
然后把我的 py文件要打包的。也放到 pyinstaller 根目录。
pyinstaller -F mainGUIversion5.py 打包开始。
打包好后,发现竟然打包完成。 但是运行不了
直接到cmd窗口去运行,发现有少包,见下图,缺什么用pip装什么,这样做,尽量不污染python原生环境。
Need pure python environment!!!
No Anaconda
例如,这个是少了 jdcal包:
一次一次打包,一次次运行发现少包。
最后发现,ok了!!!! 最后一次打包为 不到8m了。 从200M直接压缩到了 8M,任务完成。
运行也正常!
第二天开始做一个实验:
看到底是包的问题,还是python 的问题,先将openpyxl包从pyinstaller目录剪切出去,直接放到桌面,不删掉:
执行后,发现打包可以,但是程序运行错误,提示“缺少openpyxl”。。错误找到了
于是 ,开始pip 安装包。安装后再执行打包。成功!
打包成功!
这么多步骤与尝试下来。得出结论。pyinstaller的正确打包有两种方法:
第一种方法:将需要打包的程序和其所有依赖的包,统一放在pyinstaller的根目录下,直接用-F打包即可成功,少一个包都不行!
第二种方法:安装一个纯净的python环境,然后一步步测试pip,少哪个包就直接安装哪个。
两种方法各有千秋,但是推荐使用第二种方法,因为这种方法相对简便,特别是在不清楚包之间的依赖关系的情况下。
以上这篇解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]