pyinstaller参数及功能

973 2025-03-18 09:59

PyInstaller 是一个用于将 Python 程序及其依赖打包为独立可执行文件的工具,支持 Windows、macOS 和 Linux 平台。以下是 PyInstaller 的常用参数及其功能说明:

常用参数

参数 功能
-F--onefile 将程序打包为一个单独的可执行文件。
-D--onedir 将程序打包为一个文件夹,其中包含可执行文件和依赖文件(默认模式)。
--add-data <SRC;DEST or SRC:DEST> 添加非二进制文件或文件夹到打包的应用程序中,路径分隔符为 ;(Windows)或 :(Unix)。
--add-binary <SRC;DEST or SRC:DEST> 添加二进制文件到打包的应用程序中。
-p DIR--paths DIR 设置额外的模块搜索路径,类似于设置 PYTHONPATH
--hidden-import MODULENAME 指定在代码中未显式导入但需要的模块。
-w--windowed 不显示控制台窗口(仅适用于 Windows 和 macOS)。
-c--console 显示控制台窗口(默认行为)。
-i <FILE>--icon <FILE> 设置可执行文件的图标(Windows 使用 .ico 文件,macOS 使用 .icns 文件)。
--version-file FILE 将版本资源文件嵌入到 Windows 可执行文件中。
--upx-dir UPX_DIR 指定 UPX 压缩工具的路径。
--noupx 禁用 UPX 压缩。

特殊功能

  • 启动画面:通过 --splash IMAGE_FILE 添加启动画面。
  • 调试模式:使用 -d--debug 参数可以启用调试模式,帮助诊断问题。
  • 排除模块:通过 --exclude-module EXCLUDES 排除不需要的模块。
  • 运行时钩子:使用 --runtime-hook RUNTIME_HOOKS 添加自定义运行时钩子。

其他选项

  • --clean:清理 PyInstaller 缓存和临时文件。
  • --log-level LEVEL:设置构建时的日志级别(如 INFODEBUG 等)。
  • --distpath DIR:指定打包后的输出目录。

PyInstaller 的功能主要体现在以下几个方面:

  1. 独立打包:将 Python 程序及其依赖打包为独立的可执行文件,无需安装 Python 解释器。
  2. 跨平台支持:支持 Windows、macOS 和 Linux,但不能跨平台编译。
  3. 灵活的打包模式:支持单文件模式和文件夹模式。
  4. 自定义功能:通过参数和钩子文件实现高度定制。

更多详细信息可以参考 PyInstaller 的官方文档。

 

我要打包成一个文件

 

如果你只要一个单文件--onefile),就不需要 COLLECT 这一行。
.spec 里所有东西塞进 同一个 EXE(...) 即可。

1. 最小可用模板(单文件)

Python
 
复制
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None

a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[('assets/*.png', 'assets')],   # 如需打包数据
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)

pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,          # 关键:把依赖也塞进来
    a.zipfiles,
    a.datas,             # 数据文件也塞进来
    [],
    name='myapp',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=True,        # GUI 程序改为 False
    icon='myicon.ico',
)
 

2. 三步走

  1. 生成 spec(可选,或者手动新建)
    bash
     
  • 复制
    pyinstaller --onefile --name=myapp main.py
     
  • 只保留上面模板,把 COLLECT 整段删掉
  • 用 spec 打包
    bash
     
  1. 复制
    pyinstaller myapp.spec
     
完成后会在 dist\myapp.exe只有一个文件,双击即可运行。

 

 

 

 

 

 

全部评论

·