Python第三方pyinstaller库参数详解

        记录了当前PyInstaller 6.2.0版本的所有参数及说明

        pyinstaller 可以用一行命令将Python脚本生成多平台的应用程序,它有丰富的参数可以使用,如-F生成一个exe文件、指定Icon、隐藏控制窗口、指定附加打包文件、排除不需要的引用模块等等

参数

描述

说明

-h

显示帮助

-v

显示版本号

-D

生成one-folder的程序(默认)

生成结果是一个目录,各种第三方依赖、资源和exe同时存储在该目录

-F

生成one-file的程序

生成结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内

–specpath

指定.spec文件的存储路径

默认:当前目录

-n

生成的.exe文件和.spec的文件名

默认:用户脚本的名称,即main.py和main.spec

–add-data

打包额外资源

用法:pyinstaller main.py --add-data=src;dest。windows以;分割,linux以:分割

–add-binary

打包额外的代码

用法:同–add-data。与–add-data不同的是,用binary添加的文件,pyi会分析它引用的文件并把它们一同添加进来

-p

指定额外的import路径,类似于使用PYTHONPATH

参见PYTHONPATH

–hidden-import

打包额外py库

pyi在分析过程中,有些import没有正确分析出来,运行时会报import error,这时可以使用该参数

–additional-hooks-dir

指定用户的hook目录

hook用法参见其他,系统hook在PyInstaller\hooks目录下

–runtime-hook

指定用户runtime-hook

如果设置了此参数,则runtime-hook会在运行main.py之前被运行

–exclude-module

需要排除的module

pyi会分析出很多相互关联的库,但是某些库对用户来说是没用的,可以用这个参数排除这些库,有助于减少生成文件的大小

--splash IMAGE_FILE

指定启动画面图片。

-d

执行生成的main.exe时,会输出pyi的一些log,有助于查错

默认:不输出pyi的log(用法:-d {all,imports,bootloader,noarchive})

-s

优化符号表

原文明确表示不建议在windows上使用

–noupx

强制不使用upx压缩

默认:尽可能使用。

-c

显示命令行窗口

与-w相反,默认含有此参数

-w

不显示命令行窗口

编写GUI程序时使用此参数有用。

-i

为main.exe指定图标

pyinstaller -i beauty.ico main.py

–version-file

添加版本信息文件

pyinstaller --version-file ver.txt

-m, --manifest

添加manifest文件

pyinstaller -m main.manifest  (-m ])

-r RESOURCE

向Windows可执行文件添加或更新资源

–uac-admin

创建一个Manifest,该Manifest将在应用程序启动时请求提升。

–uac-uiaccess

允许升级的应用程序使用远程桌面。

–runtime-tmpdir

指定运行时的临时目录

默认:使用系统临时目录

–distpath

生成文件放在哪里

默认:当前目录的dist文件夹内

–workpath

生成过程中的中间文件放在哪里

默认:当前目录的build文件夹内

-y

如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖

默认:询问是否覆盖

–upx-dir UPX_DIR

指定upx工具的目录

默认:execution path

–clean

在本次编译开始时,清空上一次编译生成的各种文件

默认:不清除

–log-level LEVEL

控制编译时pyi打印的信息

一共有6个等级,由低到高分别为TRACE DEBUG INFO(默认) WARN ERROR CRITICAL。也就是默认情况下,不打印TRACE和DEBUG信息

--contents-directory

指定用于存储应用程序内容的目录。

--contents-directory CONTENTS_DIRECTORY

--collect-submodules

收集子模块。

将脚本中使用的 Python 模块的所有子模块一并打包。

--collect-data

收集数据文件,以便在打包时使用。

--collect-data MODULENAME

--collect-binaries

收集二进制文件。

将脚本中使用的二进制文件一并打包。

--collect-all

收集所有类型的文件。

将脚本中使用的所有文件(包括子模块、数据文件、二进制文件等)一并打包。

--copy-metadata

复制元数据。

复制与 PyInstaller 相关的元数据文件。

--recursive-copy-metadata

递归复制元数据。

递归复制与 PyInstaller 相关的元数据文件。

--python-option

传递给 Python 解释器的选项。

允许将额外的选项传递给 Python 解释器。

--upx-exclude

排除不需要压缩的文件类型。

[--upx-exclude FILE]

--osx-bundle-identifier

指定 macOS 捆绑标识符。

为生成的 macOS 应用程序指定唯一的捆绑标识符。

--argv-emulation

模拟命令行参数。

模拟命令行参数以提高兼容性。

--disable-windowed-traceback

禁用窗口化回溯。

在发生错误时禁用窗口化回溯。

--hide-console

隐藏控制台窗口。

[--hide-console {minimize-late,hide-late,minimize-early,hide-early}]

--target-architecture

 指定目标架构。

[--target-architecture ARCH] 指定生成的可执行文件的目标架构(例如,32位或64位)。

--codesign-identity

指定代码签名的身份。

为生成的 macOS 应用程序指定代码签名的身份

--osx-entitlements-file

指定 macOS 应用程序的授权文件。

[--osx-entitlements-file FILENAME]

--bootloader-ignore-signals

忽略引导加载程序的信号。

在某些情况下,忽略由引导加载程序(Bootloader)发送的信号。

scriptname

你的 Python 脚本的名称。

scriptname [scriptname ...]指定要由 PyInstaller 打包的 Python 脚本。

问:pyinstaller 如何设置隐藏窗口,并且如有报错时将日志生成到桌面或者弹出对话框提醒

PyInstaller可以使用一些参数来隐藏生成的窗口,并且你可以使用--hide-console{hide-early}选项来生成一个没有控制台窗口的可执行文件。

此外,你可以通过--log-level选项设置日志级别,以便将日志写入文件。最后,如果你想要在发生错误时提醒用户,你可以使用try-except块捕获异常,并选择性地显示对话框。

下面是一个基本的PyInstaller命令的例子:

pyinstaller --noconsole --log-level=DEBUG your_script.py

这个命令会生成一个没有控制台窗口的可执行文件,并将DEBUG级别的日志写入默认的日志文件。

如果你想要在程序中自定义日志文件的路径,可以在你的脚本中添加以下代码:

import logging

from pathlib import Path

# 设置日志文件路径

log_file_path = Path.home() / "Desktop" / "your_log_file.log"

logging.basicConfig(filename=log_file_path, level=logging.DEBUG)

# 你的其他代码...

# 捕获异常并在发生错误时显示对话框

try:

    # 你的主程序逻辑...

except Exception as e:

    logging.error(f"An error occurred: {str(e)}")

messagebox.showerror("错误", f"发生错误: {str(e)}")

在这个例子中,日志会写入指定的文件路径,而且在发生异常时,会弹出一个错误对话框来提醒用户。请确保在使用messagebox之前,你已经导入了相应的模块(例如,from tkinter import messagebox)。

请根据你的实际需求对这些代码进行适当的修改。

你可能感兴趣的:(Python第三方库,python,开发语言)