python打包工具pyinstaller,参数说明文档

root@ubuntu:/# pyinstaller --help
用法: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME] [--add-data <SRC;DEST or SRC:DEST>] [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
                   [--hidden-import MODULENAME] [--collect-submodules MODULENAME] [--collect-data MODULENAME] [--collect-binaries MODULENAME] [--collect-all MODULENAME]
                   [--copy-metadata PACKAGENAME] [--recursive-copy-metadata PACKAGENAME] [--additional-hooks-dir HOOKSPATH] [--runtime-hook RUNTIME_HOOKS]
                   [--exclude-module EXCLUDES] [--splash IMAGE_FILE] [-d {all,imports,bootloader,noarchive}] [--python-option PYTHON_OPTION] [-s] [--noupx]
                   [--upx-exclude FILE] [-c] [-w] [-i <FILE.ico or FILE.exe,ID or FILE.icns or Image or "NONE">] [--disable-windowed-traceback] [--version-file FILE]
                   [-m <FILE or XML>] [--no-embed-manifest] [-r RESOURCE] [--uac-admin] [--uac-uiaccess] [--win-private-assemblies] [--win-no-prefer-redirects]
                   [--argv-emulation] [--osx-bundle-identifier BUNDLE_IDENTIFIER] [--target-architecture ARCH] [--codesign-identity IDENTITY]
                   [--osx-entitlements-file FILENAME] [--runtime-tmpdir PATH] [--bootloader-ignore-signals] [--distpath DIR] [--workpath WORKPATH] [-y]
                   [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]
                   scriptname [scriptname ...]

位置参数:
  scriptname            要处理的脚本文件的名称或者一个.spec文件。如果指定了.spec文件,则大多数选项都是不必要的,会被忽略。

可选参数:
  -h, --help            显示帮助信息并退出
  -v, --version         显示程序版本信息并退出。
  --distpath DIR        指定打包应用的目录(默认为./dist)
  --workpath WORKPATH   指定所有临时工作文件(.log, .pyz等)的目录(默认为./build)
  -y, --noconfirm       替换输出目录(默认为SPECPATH/dist/SPECNAME)而不需要确认
  --upx-dir UPX_DIR     UPX工具的路径(默认为搜索执行路径)
  -a, --ascii           不包含Unicode编码支持(默认情况下如果可用则包含)
  --clean               在构建之前清理PyInstaller缓存和临时文件。
  --log-level LEVEL     构建时控制台消息的详细程度。LEVEL可以是TRACE、DEBUG、INFO、WARN、DEPRECATION、ERROR、FATAL之一(默认为INFO)。也可以通过PYI_LOG_LEVEL环境变量进行设置。

生成内容:
  -D, --onedir          创建一个包含可执行文件的单文件夹捆绑包(默认)
  -F, --onefile         创建一个单文件捆绑的可执行文件。
  --specpath DIR        存储生成的.spec文件的文件夹(默认为当前目录)
  -n NAME, --name NAME  分配给捆绑应用和.spec文件的名称(默认为第一个脚本的基本名称)

捆绑什么,搜索什么:
  --add-data <SRC;DEST or SRC:DEST>
                        添加到可执行文件的附加非二进制文件或文件夹。路径分隔符是平台特定的,使用``os.pathsep``(在Windows上为``;``,在大多数Unix系统上为``:``)。此选项可以多次使用。
  --add-binary <SRC;DEST or SRC:DEST>
                        添加到可执行文件的附加二进制文件。有关详细信息,请参见``--add-data``选项。此选项可以多次使用。
  -p DIR, --paths DIR   搜索导入的路径(类似于使用PYTHONPATH)。可以使用多个路径,用``':'``分隔,或多次使用此选项。相当于在.spec文件中提供``pathex``参数。
  --hidden-import MODULENAME, --hiddenimport MODULENAME
                        指定在脚本代码中不可见的导入模块。此选项可以多次使用。
  --collect-submodules MODULENAME
                        收集指定包或模块的所有子模块。此选项可以多次使用。
  --collect-data MODULENAME, --collect-datas MODULENAME
                        收集指定包或模块的所有数据文件。此选项可以多次使用。
  --collect-binaries MODULENAME
                        收集指定包或模块的所有二进制文件。此选项可以多次使用。
  --collect-all MODULENAME
                        收集指定包或模块的所有子模块、数据文件和二进制文件。此选项可以多次使用。
  --copy-metadata PACKAGENAME
                        复制指定包的元数据。此选项可以多次使用。
  --recursive-copy-metadata PACKAGENAME
                        复制指定包及其所有依赖项的元数据。此选项可以多次使用。
  --additional-hooks-dir HOOKSPATH
                        指定额外的钩子路径。此选项可以多次使用。
  --runtime-hook RUNTIME_HOOKS
                        指定自定义运行时钩子文件的路径。运行时钩子是与可执行文件捆绑在一起的代码,在任何其他代码或模块之前执行,用于设置运行时环境的特殊功能。此选项可以多次使用。
  --exclude-module EXCLUDES
                        忽略的可选模块或包(Python名称,而不是路径名称)。此选项可以多次使用。
  --splash IMAGE_FILE   (实验性功能) 向应用程序添加一个带有图像IMAGE_FILE的启动画面。启动画面可以在解压过程中显示进度更新。

如何生成:
  -d {all,imports,bootloader,noarchive}, --debug {all,imports,bootloader,noarchive}
                        提供用于调试冻结应用程序的帮助。此参数可以多次提供以选择以下选项之一。
                        
                        - all: 以下所有选项。
                        
                        - imports: 指定-v选项给底层Python解释器,导致它在每次初始化模块时打印一条消息,显示加载模块的位置(文件名或内置模块)。参见
                          https://docs.python.org/3/using/cmdline.html#id4。
                        
                        - bootloader: 告诉引导加载程序在初始化和启动捆绑应用程序时发出进度消息。用于诊断缺少导入的问题。
                        
                        - noarchive: 将所有冻结的Python源文件存储为结果可执行文件内的存档,而不是文件存储在结果输出目录中。
                        
  --python-option PYTHON_OPTION
                        指定要在运行时传递给Python解释器的命令行选项。目前支持"v"(等效于"--debug imports")、"u""W<warning control>"-s, --strip           对可执行文件和共享库应用符号表剥离(不推荐在Windows上使用)
  --noupx               即使可用,也不使用UPX(在Windows和*nix之间的工作方式不同)
  --upx-exclude FILE    使用upx时防止对二进制文件进行压缩。如果upx在压缩过程中破坏某些二进制文件,通常会使用此选项。FILE是二进制文件的文件名,不包含路径。此选项可以多次使用。

仅适用于Windows和Mac OS X的选项:
  -c, --console, --nowindowed
                        为标准输入/输出打开控制台窗口(默认)。在Windows上,如果第一个脚本是'.pyw'文件,则此选项无效。
  -w, --windowed, --noconsole
                        Windows和Mac OS X:不为标准输入/输出提供控制台窗口。在Mac OS上,这还会触发构建Mac OS .app包。在Windows上,如果第一个脚本是'.pyw'文件,则此选项会自动设置。在*NIX系统上,此选项将被忽略。
  -i <FILE.ico或FILE.exe,ID或FILE.icns或Image或"NONE">, --icon <FILE.ico或FILE.exe,ID或FILE.icns或Image或"NONE">
                        FILE.ico:将图标应用于Windows可执行文件。FILE.exe,ID:从exe中提取具有ID的图标。FILE.icns:将图标应用于Mac OS上的.app包。如果输入的图像文件不是平台格式(Windows上的ico,Mac上的icns),PyInstaller将尝试使用Pillow将图标转换为正确的格式(如果安装了Pillow)。使用"NONE"来不应用任何图标,从而使操作系统显示一些默认图标(默认:应用PyInstaller的图标)。此选项可以多次使用。
  --disable-windowed-traceback
                        禁用窗口模式(noconsole)下未处理异常的回溯转储(仅适用于Windows和macOS),并显示一个消息,说明此功能已禁用。

Windows特定选项:
  --version-file FILE   从FILE中添加版本资源到exe。
  -m <FILE或XML>, --manifest <FILE或XML>
                        将manifest FILE或XML添加到exe。
  --no-embed-manifest   生成外部的.exe.manifest文件,而不是将manifest嵌入到exe中。仅适用于onedir模式;在onefile模式下,无论此选项如何,manifest始终被嵌入。
  -r RESOURCE, --resource RESOURCE
                        向Windows可执行文件添加或更新资源。RESOURCE是一个到四个项目,FILE[,TYPE[,NAME[,LANGUAGE]]]。FILE可以是数据文件或exe/dll。对于数据文件,至少必须指定TYPE和NAME。LANGUAGE默认为0,或可以指定为通配符*以更新给定TYPE和NAME的所有资源。对于exe/dll文件,如果省略了或指定为通配符*,则将添加/更新来自FILE的所有资源到最终的可执行文件中。此选项可以多次使用。
  --uac-admin           使用此选项创建一个Manifest,将在应用程序启动时请求提升。
  --uac-uiaccess        使用此选项允许提升的应用程序与远程桌面一起工作。

Windows并行程序集搜索选项(高级):
  --win-private-assemblies
                        将任何捆绑到应用程序中的共享程序集更改为私有程序集。这意味着始终使用这些程序集的确切版本,并忽略用户机器上系统级安装的任何更新版本。
  --win-no-prefer-redirects
                        在搜索要捆绑到应用程序中的共享或私有程序集时,PyInstaller将不倾向于遵循重定向到更新版本的策略,并尝试捆绑程序集的确切版本。

Mac OS特定选项:
  --argv-emulation      启用macOS应用程序包的argv模拟。如果启用,启动时的初始打开文档/URL事件将由引导加载程序处理,并将传递的文件路径或URL附加到sys.argv。
  --osx-bundle-identifier BUNDLE_IDENTIFIER
                        Mac OS .app包标识符用作默认的唯一程序名称,用于代码签名目的。通常的形式是反向DNS表示法中的分层名称。例如:com.mycompany.department.appname(默认值:第一个脚本的基本名称)
  --target-architecture ARCH, --target-arch ARCH
                        目标架构(仅适用于macOS;有效值:x86_64,arm64,universal2)。启用在冻结应用程序的universal2和单架构版本之间切换(前提是Python安装支持目标架构)。如果未指定目标架构,则针对当前运行的架构。
  --codesign-identity IDENTITY
                        代码签名身份(仅适用于macOS)。使用提供的身份对收集的二进制文件和生成的可执行文件进行签名。如果未提供签名身份,则执行自动签名。
  --osx-entitlements-file FILENAME
                        用于在签署收集的二进制文件时使用的权限文件(仅适用于macOS)。

很少使用的特殊选项:
  --runtime-tmpdir PATH
                        在`onefile`模式下提取库和支持文件的位置。如果给出此选项,引导加载程序将忽略运行时操作系统定义的任何临时文件夹位置。在此处将创建``_MEIxxxxxx``文件夹。请仅在您知道自己在做什么的情况下使用此选项。
  --bootloader-ignore-signals
                        告诉引导加载程序忽略信号而不是将其转发给子进程。在某些情况下很有用,例如监督进程通过进程组向引导加载程序和子进程发送信号,以避免向子进程发送两次信号。
root@ubuntu:/# 

 程序有使用到sklearn库时,打包运行时提示缺少一些模块,如sklearn.utils._cython_blas

修改spec文件中的hiddenimports参数后,重新打包,修改如下

 
a = Analysis(['mainarea_buffer.py','E:\\GitHub\\Zone\\Zone\\zone_func\\func.py'],
             pathex=['E:\\GitHub\\Zone\\Zone'],
             binaries=[],
             datas=[('global_popu.tif', '.')],
             hiddenimports=['sklearn.utils._cython_blas','cython', 'sklearn', 'sklearn.ensemble','sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils','scipy._lib.messagestream'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

 

运行命令,生成app.spec

 pyi-makespec app.py



 

posted @ 2023-11-22 10:07  hotzhml  阅读(1521)  评论(0编辑  收藏  举报