pipinstaller打包突然变大了好多

105 2025-03-16 18:00

使用 PyInstaller 打包后程序体积突然增大,可能是由于以下原因导致的:
1. **引入了不必要的依赖库**:PyInstaller 会将环境中安装的所有依赖库打包进生成的可执行文件中。
2. **使用了 Anaconda 环境**:Anaconda 环境中包含大量默认安装的库,这些库可能会被误打包。
3. **未对文件进行压缩**:未对 Python 解释器或依赖库的二进制文件进行压缩。

以下是解决 PyInstaller 打包体积过大的方法:

### 1. 使用虚拟环境
通过创建纯净的虚拟环境,只安装项目所需的依赖库,避免打包不必要的模块。
- 安装 `pipenv`:
  ```bash
  pip install pipenv
  ```
- 在项目目录下创建虚拟环境并激活:
  ```bash
  pipenv install
  pipenv shell
  ```
- 在虚拟环境中安装项目所需的依赖库和 PyInstaller:
  ```bash
  pip install pyinstaller
  pip install <项目所需依赖库>
  ```
- 使用 PyInstaller 打包:
  ```bash
  pyinstaller --onefile your_script.py
  ```

### 2. 使用 UPX 压缩
UPX(Ultimate Packer for eXecutables)可以对生成的可执行文件进行压缩,从而减小体积。
- 下载 UPX 并解压到项目目录下:
  [UPX 下载地址](https://github.com/upx/upx/releases/download/v3.96/upx-3.96-win64.zip)
- 使用 UPX 压缩打包:
  ```bash
  pyinstaller --onefile --upx-dir=<UPX解压路径> your_script.py
  ```

### 3. 排除不必要的模块
在 PyInstaller 的 `.spec` 文件中,通过 `excludes` 参数显式排除不需要的模块。
- 修改 `.spec` 文件中的 `Analysis` 部分,添加 `excludes` 参数:
  ```python
  excludes=['tkinter', 'tests', 'docutils', 'unittest', 'pylint', 'matplotlib', 'numpy']
  ```
- 使用 `.spec` 文件重新打包:
  ```bash
  pyinstaller your_script.spec
  ```

### 4. 检查代码和资源文件
- 确保代码中没有引入不必要的库。
- 减少代码中的重复内容。
- 如果项目中包含大量资源文件(如图片、音频等),可以考虑将这些文件单独存储,而不是打包到可执行文件中。

通过以上方法,可以有效减小 PyInstaller 打包后的程序体积。

全部评论

·