你是否曾经尝试过将你的 Python 程序打包成一个可执行文件,却发现生成的文件大得惊人?别担心,本文将教你如何使用 PyInstaller 尽可能减小生成的 onefile 大小,让你的程序轻盈如风!
1. 使用虚拟环境
首先,我们需要在虚拟环境(virtual environment)中安装我们的程序及其依赖项。这样做的好处是可以避免打包不必要的库,从而减小最终文件的大小。
python -m venv my_venv
source my_venv/bin/activate # 在 Windows 上使用 my_venv\Scripts\activate
pip install -r requirements.txt
2. 仅打包必要的库
确保 requirements.txt
文件仅包含你的程序所需的库。这样,在打包过程中,PyInstaller 只会包含这些库,从而减小文件大小。
3. 使用 --onefile
选项
PyInstaller 的 --onefile
选项可以将所有文件打包成一个单独的可执行文件。这是一个很好的选择,因为它可以让你更方便地分发你的程序。
pyinstaller --onefile my_script.py
4. 使用 --strip
选项
使用 --strip
选项可以从可执行文件中删除符号信息,从而减小文件大小。这对于发布版本特别有用。
pyinstaller --onefile --strip my_script.py
5. 使用 --noconsole
选项
如果你的程序没有控制台窗口,可以使用 --noconsole
选项。这将减小生成的可执行文件的大小。
pyinstaller --onefile --noconsole my_script.py
6. 使用 --exclude-module
选项
如果你知道某些库对你的程序来说是不必要的,可以将它们排除在打包过程之外。
pyinstaller --onefile --exclude-module numpy my_script.py
7. 使用 UPX 压缩
UPX 是一个可执行文件压缩器,可以减小生成的可执行文件的大小。要使用 UPX,你需要先下载并安装它,然后在 PyInstaller 命令中使用 --upx-dir
选项指定 UPX 的路径。
pyinstaller --onefile --upx-dir=path/to/upx my_script.py
8. 添加额外数据文件
如果你的程序需要额外的数据文件,可以使用 --add-data
选项将它们添加到打包过程中。这样可以避免将整个文件夹打包到可执行文件中。
pyinstaller --onefile --add-data="data_file.txt;data" my_script.py
9. 为你的程序添加图标
最后,使用 --icon
选项为你的可执行文件添加一个图标,使其看起来更专业。
pyinstaller --onefile --icon=my_icon.ico my_script.py
打包可能存在的闪退问题:
如果是pandas读取excel,就会出现闪退:
pyinstaller -F -w -i ./favicon.ico app/app.py
app.exe > error_log.txt
上面可以查看闪退时的CMD错误。
遵循以上步骤,你应该能够使用 PyInstaller 生成一个非常小的 onefile 可执行文件。但请注意,生成的可执行文件可能会因为压缩和优化而运行速度较慢。在实际使用中,可以根据需求权衡文件大小和运行速度。