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
:设置构建时的日志级别(如INFO
、DEBUG
等)。--distpath DIR
:指定打包后的输出目录。
PyInstaller 的功能主要体现在以下几个方面:
- 独立打包:将 Python 程序及其依赖打包为独立的可执行文件,无需安装 Python 解释器。
- 跨平台支持:支持 Windows、macOS 和 Linux,但不能跨平台编译。
- 灵活的打包模式:支持单文件模式和文件夹模式。
- 自定义功能:通过参数和钩子文件实现高度定制。
更多详细信息可以参考 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. 三步走
-
生成 spec(可选,或者手动新建)bash
-
复制
pyinstaller --onefile --name=myapp main.py
-
只保留上面模板,把
COLLECT
整段删掉。 -
用 spec 打包bash
-
复制
pyinstaller myapp.spec
完成后会在
dist\myapp.exe
,只有一个文件,双击即可运行。
全部评论