python工具pyinstaller打包生成exe文件非常大的原因分析(openpyxl)openpyxl

【python】python的打包工具pyinstaller生成exe非常大的原因分析(openpyxl)openpyxl

 -F 打包出来 一个一个都有200多m

 
  1. from tkinter import *

  2. from tkinter.font import Font

  3. from email.mime.text import MIMEText

  4. from email.header import Header

  5. import tkinter

  6. import tkinter.messagebox

  7. import tkinter.simpledialog

  8. import tkinter.filedialog

  9. import openpyxl

  10. import smtplib

  11. import threading

  12.  
  13. print(3*2)

每次删掉一行,打包一个一个个包进行测试。发现有的包打出来没什么影响。

发现有一个包异常,只要有这个包,就是特别大---openpyxl

打包时间也特别长

检查日志:发现openpyxl  与 pandas numpy有关。

单独将代码提出,用两种方法调用,发现没什么卵用。

 
  1. from openpyxl import load_workbook

  2.  
  3. #import openpyxl

  4.  
  5. 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?

在网上问了外国人,建议说是要安装一个 python的虚拟机器,因为我们安装的是Anaconda,里面很多库连接进去了很多不必要的其他库和包

有道理!

所以,干脆用一台笔记本,安装纯python3.6的环境。并单独把openpyxl 单独下下来,到时候有用。

装好后,继续用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,少哪个包就直接安装哪个。

两种方法各有千秋,但是推荐使用第二种方法,因为这种方法相对简便,特别是在不清楚包之间的依赖关系的情况下。

--------------------- 本文来自 captain811 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/captain811/article/details/79628686?utm_source=copy

猜你喜欢

转载自blog.csdn.net/Hubz131/article/details/82980967