ISq*_*red 5 python exe tkinter pyinstaller
对于这个极其模糊的问题,我深表歉意,但我一直在绞尽脑汁地尝试减小 Pyinstaller .exe 的大小,因此我决定检查更有经验的 Python 开发人员对此类文件的一般文件大小的看法。我一个人工作,所以我真的不知道还能问谁。
我的脚本需要相当多的模块,包括APscheduler(包括SQLAlchemy)、sqlite3、tkinter、datetime、patool、shutil,但最终它是一个相对简单的程序,应该作为Windows后台服务运行(最终目标)。没有使用 pandas、numpy、scipy、keras 或其他大型库。我还为 GUI 添加了 5 个 .png 图像(总共约 350 kB)。这会创建一个 15.5 MB 的 .exe,运行时该程序会占用 30 MB 的物理内存。
所有在线建议都讨论使用Python(而不是Anaconda)为文件创建单独的虚拟环境(我现在正在努力这样做,但它一直很痛苦..)。查看 Pyinstaller 创建的 dist 文件夹,大多数大型 .dll 似乎对于程序的运行至关重要(mfc140u.dll,python37.dll,tcl,tk,multiprocessing,sqlite,..),并且似乎没有是 pandas 或 tensorflow 或其他安装在我的 conda 站点包中的库。我还应该提到这是我的第一个运行程序,所以我认为代码架构并不像应有的那么高效。
特别是 APScheduler 有相当多的依赖项,因此我不确定将其隔离到单个虚拟环境会对大小产生如此巨大的影响。然而,我被告知该文件应该小得多,这样就不会增加操作系统的负担 - 用 C# 创建的类似但稍微简单的软件只有 64 KB。
有经验的开发人员会说,考虑到所有库/依赖项,这个文件大小是正常的,除了在纯 Python 中创建单独的 venv 之外,还能做什么?
编辑:经过 3 天的时间并与数千个错误作斗争,我设法使脚本在系统 Python(而不是 Anaconda)及其单独的虚拟环境中运行,以便仅安装我需要的包。结果:文件仅缩小了约 2 MB。所以绝对不值得。但对于其他人来说,我猜可能是这样。
15 MB 的磁盘和 30 MB 的内存对于今天来说根本不算什么。(恕我直言,无论谁告诉你这会“加重操作系统的负担”,他都生活在 Windows 95 的某个地方,或者更早。)
考虑到 Python 解释器、标准库、附加库以及所有内容都捆绑在一起,该文件大小是正常的;一个 C# 程序为 64 KB,执行相同的操作受益于 Windows 附带的 C# 库和虚拟机。
相比之下,在 JavaScript 领域,桌面应用程序往往是基于Electron 的,你从大约一百兆的磁盘使用开始......