Pyinstaller onefile 可执行文件非常庞大和缓慢

Posted

技术标签:

【中文标题】Pyinstaller onefile 可执行文件非常庞大和缓慢【英文标题】:Pyinstaller onefile Executable Incredibly Huge and Slow 【发布时间】:2019-07-18 03:19:31 【问题描述】:

我知道我不是第一个问的,但是论坛上的其他答案对我没有帮助,所以我问了。我有一个短的(181 行)python 脚本,只有导入

import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import Slider, RadioButtons

并运行带有滑块和单选按钮的交互式数学工具。但是当我使用 pyinstaller 构建它时,我最终得到了一个巨大的 (90 MB) dist 文件夹,其中似乎包含各种不必要的包,如 babel 和密码学。里面的可执行文件大约需要 5 秒左右才能实际显示图形。当我使用 --onefile 选项运行它时,情况似乎并没有好转,因为我得到了一个 43 MB 的可执行文件,显示图形需要更长的时间,大约 10 秒。

我很确定这不是脚本的错,因为在 Spyder 中,打开它需要不到一秒钟的时间。我怀疑这是因为所有无关的软件包。如果是这样,我如何让 pyinstaller 排除它们,如果没有,那么可能的问题是什么?谢谢。

编辑:另外,我在 conda 虚拟环境中执行所有这些操作,我在某处读到该环境应该已经有助于使 pyinstaller 的可执行文件更小。创建环境后,我直接安装的包只有pyinstaller、spyder、numpy和matplotlib。

【问题讨论】:

这应该会有所帮助。 ***.com/questions/9469932/… 【参考方案1】:

发生这种情况是因为在创建可执行文件时您也在使用库,我所做的只是导入程序所需的内容然后编译它,例如,对于 Tkinter 中的应用程序:

from tkinter import Tk, Label
root = Tk()
Label(root, text='Label').pack()
root.mainloop()

【讨论】:

以上是关于Pyinstaller onefile 可执行文件非常庞大和缓慢的主要内容,如果未能解决你的问题,请参考以下文章

使用 PyInstaller 在 --onefile 中使用 QML 构建 PyQt5

在使用 PyInstaller --onefile 打包 kivy 时包含 .kv/.json 文件?

pyinstaller

pyinstaller简要使用说明

使用 PyInstaller (--onefile) 捆绑数据文件

使用 onefile 选项在 Pyinstaller 中添加数据文件