【发布时间】:2017-06-21 16:16:25
【问题描述】:
我只有一行代码input() 用python 编写并使用带有选项--onefile 的pyinstaller 打包。 exe文件是4577 kB,几乎是5Mb。如何减小其大小或排除某些自动捆绑的库?
【问题讨论】:
标签: python pyinstaller
我只有一行代码input() 用python 编写并使用带有选项--onefile 的pyinstaller 打包。 exe文件是4577 kB,几乎是5Mb。如何减小其大小或排除某些自动捆绑的库?
【问题讨论】:
标签: python pyinstaller
啊,您没有在单独的虚拟环境中创建构建。
创建一个仅用于构建目的的虚拟环境并在此环境中安装您需要的软件包。
在你的 cmd 中执行这些来创建一个虚拟环境
python -m venv build_env
cd build_env
C:\build_env\Scripts\Activate
你会看到这个 >>(build_env) C:\build_env
安装脚本所需的所有包,从 pyinstaller 开始
pip 安装 pyinstaller
安装完成后,像以前一样构建 exe。 使用虚拟环境构建的exe会更快更小!! 更多详情请查看https://python-forum.io/Thread-pyinstaller-exe-size
【讨论】:
您使用 pyinstaller 创建的 .exe 文件包括 python 解释器和脚本中包含的所有模块。也许,您使用的模块本身就有一个大库。但是,您可以尝试使用 py2exe 但它可能不适用于所有项目。另一种使其更小的方法是使用压缩程序,使用 UPX 压缩可执行文件(看看这个: http://htmlpreview.github.io/?https://github.com/pyinstaller/pyinstaller/blob/v2.0/doc/Manual.html#a-note-on-using-upx)。 您也可以尝试排除某些项目,但可以自行决定删除这些项目不会影响 .exe 的功能。
【讨论】:
input(),它占用了将近5mb的空间。所以我没有加载任何模块。
我遇到了类似的问题并找到了解决方案。我使用了 Windows 终端预览。该程序允许创建各种虚拟环境,例如 Windows Power Shell(顺便说一句。Linux Ubuntu 也是如此。另外,值得注意的是:您可以在该程序中安装多个终端,甚至一次打开几个终端。非常酷的东西)。
在 Windows 终端预览中的 Windows Power Shell 中,我安装了所有必要的库(如 pandas 等),然后我打开了文件的路径并尝试使用此命令:
pyinstaller --onefile -w 'filename.py'
...但是,输出 exe 不起作用。出于某种原因,控制台说缺少一个库(我之前安装的)。我在模仿auto-py-to-exe 库中找到了解决方案。此 GUI 使用的命令是:
pyinstaller --noconfirm --onedir --console "C:/Users/something/filename.py"
而且这个效果很好。 我将输出 exe 程序的大小从 911MB 减小到 82.9MB!!!
顺便说一句:911MB 是auto-py-to-exe 输出的大小。
我想知道为什么还没有人创建一个压缩器来读取代码,检查哪些库是代码的一部分,然后只将它们放入压缩器中。就我而言,auto-py-to-exe 可能加载了我曾经安装过的所有库。这可以解释这个压缩文件夹的大小。
有些人建议使用https://virtualenv.pypa.io/en/stable/,但在我看来,这个库非常困难,至少对我来说是这样。
【讨论】:
--onefile 和 --onedir 做不同的事情(参见pyinstaller.readthedocs.io/en/stable/…)。可执行文件的大小无法比较,因为--onedir 不会将所需的库捆绑到可执行文件中,而是将它们放在旁边。
--onedir 的情况下(最终被我使用):我测量了文件夹的大小,而不是.exe。 “大小问题”与常规压缩器“吸入”所有通过 Anaconda 终端安装(无论何时)的库有关。当我使用auto-py-to-exe 库时,我也可以选择--onedir。输出的大小 - 正如我所说 - 911 MB。