如何让Python的pyinstaller生成的文件更小

用的 anaconda 建立了一个 venv, 里面只装了必要的 package, 但是用 pyinstaller 生成的文件 500 多 m,这个有点太大了, 这个能有什么办法让文件小一点吗?

代码里面引用的包就是这些, 文件要这么大吗?

import subprocess
import datetime
import random
import json
import os
import threading
import cv2
import pyautogui
import numpy as np
import win32gui
import time

如何让Python的pyinstaller生成的文件更小

6 回复

大包
cv2
numpy


用PyInstaller打包Python程序,文件大小主要取决于你导入的库。要减小体积,核心思路就是减少不必要的依赖。

最有效的方法是使用虚拟环境,只安装程序运行必需的包。比如,用venv创建一个干净环境,再用pip安装你的依赖,这样打包时就只包含这些。

另一个关键点是使用--onefile模式时,可以配合UPX压缩工具。先下载UPX,打包时加上--upx-dir参数指向UPX目录,PyInstaller会自动用它压缩二进制文件,通常能显著减小体积。

对于数据文件,用--add-data手动添加,避免打包整个目录的无关文件。

这里有个完整示例,假设你的主程序是main.py,并且已经安装了必要的库(比如就用了requests):

# 1. 创建并激活虚拟环境(Windows)
python -m venv clean_venv
clean_venv\Scripts\activate

# 2. 在虚拟环境中只安装必要的包
pip install requests

# 3. 使用PyInstaller打包,启用UPX压缩(假设UPX放在C:\upx)
pyinstaller --onefile --upx-dir C:\upx --add-data "config.ini;." main.py

如果程序简单到只用标准库,那打包出来就是一个极小的可执行文件加Python运行时。对于带GUI(如PyQt/PySide)或科学计算库(如NumPy)的程序,体积本身就会比较大,这是库本身的特性。

总结:用干净环境打包,并启用UPX压缩。

开 upx 压缩

用 from import 试下 之引用需要的包
标准库 应该挺小的 感觉主要是
import cv2
import pyautogui
import numpy as np
import win32gui
这几个大

我发现一个问题了, 就是不用 anaconda 做 venv 的话体积小很多楼上的方法我再试试

用的 miniconda,体积大应该还是 GUI 相关的库,pyqt 压缩后 60M

回到顶部