网站首页 动画案例,有个新网站能提供,wordpress 文章内容,wordpress google ajax文章目录环境要求使用参数位置参数可选参数生成什么捆绑什么#xff1f;在哪搜索如何生成Windows 和 Macos 专用参数Windows 专用参数MacOS 专用参数很少用的特殊参数spec 文件创建 specspec 文件基本操作添加文件到绑定添加数据文件添加模块中的数据文件添加二进制文件使用 T…文章目录环境要求使用参数位置参数可选参数生成什么捆绑什么在哪搜索如何生成Windows 和 Macos 专用参数Windows 专用参数MacOS 专用参数很少用的特殊参数spec 文件创建 specspec 文件基本操作添加文件到绑定添加数据文件添加模块中的数据文件添加二进制文件使用 TOC 添加文件使用 Tree 类指定 Python 解释器选项设置 SPLASH 目标可用的全局变量源码地址https://github.com/pyinstaller/pyinstallerPyInstaller是一个强大的打包工具通过它可以将Python 项目及其项目所有的依赖都打包到一个独立的应用包中这个应用包可以在没有Python 环境以及其他依赖的情况下独立运行。环境要求如果操作系统是WindowsPyInstaller需要运行在Windows 8及以上版本。PyInstall可以创建视窗应用非控制台视窗。如果操作系统是MacOSPyInstaller在macOS 10.15(Catalina)或更新版本上运行。它可以构建图形窗口应用程序不使用终端窗口的应用程序。PyInstaller构建的应用程序与运行它的macOS版本以及以下版本兼容。它可以在任何一种架构的macOS机器上构建x86_64、arm64或混合通用二进制文件。如果操作系统是GNU/LinuxPyInstaller需要ldd终端应用程序来发现每个应用所依赖的库或共享库。它通常在发行包glibc或libc-bin中找到。它还需要objdump终端应用程序从对象文件中提取信息objcopy终端应用程序将数据附加到引导程序中。它们通常在发行包binutils中找到。如果操作系统是AIXSolarisFreeBSD或OpenBSD用户报告在这些平台上成功运行PyInstaller但没有在这些平台上进行测试。需要使用ldd和objdump命令。使用参数pyinstaller命令的语法是Pyinstaller [options] script [script…]| specfile在最简单的情况下将当前目录设置为程序myscript.py的位置并执行pyinstaller myscript.py首先PyInstaller根据脚本myscript.py分析找到所有导入和所需要的模块然后在与脚本相同的文件夹中编写myscript.spec。如果脚本不存在则在与脚本相同的文件夹中创建build文件夹。在build文件夹中写入一些日志文件和工作文件。如果脚本不存在则在与脚本相同的文件夹中创建dist文件夹。在dist目录中创建和写入myscript可执行文件夹。在dist文件夹中你可以找到你要分发的应用包。通常在命令行上指定一个脚本名如上的myscript.py即可但如果您指定了更多那么所有指定都将被分析并包含到输出中。如果提供了与第一个脚本名称相同的spec文件和可执行文件夹或文件。那么它的代码在运行时则首先执行。对于某些用途您可以编辑myscript.spec的内容。然后使用PyInstaller运行与脚本同名的spec文件而不是脚本pyinstaller myscript.specmyscript.spec文件包含了在使用脚本文件作为参数运行pyinstaller或pyi-makespec时所用选项的大部分信息。在使用spec文件作为参数运行pyinstaller时通常不需要指定任何选项。在使用spec文件构建时只有少数命令行选项有影响。例如您可以提供脚本或规范文件的路径pyinstaller options… ~/myproject/source/myscript.py位置参数scriptnamePython 脚本文件名或者spec文件名。如果指定了.spec文件则大多数选项都是不必要的并且会被忽略。可选参数参数说明-h,--help显示帮助信息后退出-v,--version显示版本信息后退出--distpath DIR指定绑定的应用放置的目录默认为./dist--workpath WORKPATH为PyInstaller指定工作目录用来存放.log,.pyz文件等。默认为./build)-y,--noconfirm替换输出目录。默认SPECPATH/dist/SPECNAME不需要确认--upx-dir UPX_DIRUPX实用信息路径默认为搜索执行路径--clean在构建之前清除PyInstaller缓存删除生成的临时文件。--log-level LEVEL构建时控制台消息中的详细信息级别。LEVEL可以是TRACEDEBUGINFOWARNDEPRECATIONERRORFATAL默认值INFO中的一个。也可以通过PYI_LOG_LEVEL环境变量设置并覆盖它。生成什么参数说明-D,--onedir创建一个包含可执行文件的单文件夹包默认-F,--onefile创建可执行单文件。--specpath DIR用于存储生成的spec文件的文件夹默认当前目录-n,--name NAME分配给绑定的应用程序名和spec文件名默认第一个脚本的名称不含扩展名--contents-directory CONTENTS_DIRECTORY仅对于onedir构建指定所有支持文件即除了可执行文件之外的所有文件将放置的目录名称。使用 ”.“ 重新启用旧的onedir布局但不包含contents目录。捆绑什么在哪搜索参数说明--add-data SOURCE:DEST额外的数据文件或包含要添加的数据文件的目录。参数值是source:dest_dir的形式其中source是要收集的文件或目录的路径dest_dir是相对于顶级应用程序目录的目标目录两个路径用冒号:分隔。要将文件放入顶级应用程序目录请使用 ”.“ 作为dest_dir。此选项可以多次使用。--add-binary SOURCE:DEST要添加的其他二进制文件。格式请参见--add-data选项。此选项可以多次使用。-p,--paths DIR用于搜索导入的路径如使用PYTHONPATH。允许使用多个路径以 ”:“ 分隔或者多次使用此选项。相当于在spec文件中提供pathex参数。--hidden-import,--hiddenimport MODULENAME打包额外的库。此选项可以多次使用。PyInstaller在分析过程中有些导入没有正确分析出来运行时会报导入错误这时可以使用该参数--collect-submodules MODULENAME从指定的包或模块收集所有子模块。此选项可以多次使用。--collect-data,--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,--debug {all,imports,bootloader,noarchive}执行生成的主执行程序时会输出PyInstaller的一些log有助于查错。--optimize LEVEL对收集的模块和脚本采用的优化级别--python-option PYTHON_OPTION传递给 Python 解释器的选项。允许将额外的选项传递给 Python 解释器。-s,--strip优化符号表。不建议在windows上使用--noupx强制不使用upx压缩。默认尽可能使用。--upx-exclude FILE使用upx压缩时排除指定二进制文件。此选项可以多次使用。Windows和Macos专用参数参数说明-c,--console,--nowindowed打开标准控制台窗口默认。在Windows上如果第一个脚本是.pyw文件则无效。-w,--windowed,--noconsoleWindows和macOS不提供标准控制台窗口。在macOS上这也会触发构建macOS应用程序包。在Windows上如果第一个脚本是.pyw文件则自动设置此选项。该选项在*NIX系统上被忽略。--hide-console {hide-late,minimize-late,minimize-early,hide-early}仅Windows在启用控制台的可执行文件中如果程序拥有控制台窗口即不是从现有控制台窗口启动则bootloader会自动隐藏或最小化控制台窗口。-i,--icon FILE.ico or FILE.exe,ID or FILE.icns or Image or NONE为Windows可执行文件指定图标。--disable-windowed-traceback在视窗非控制台窗口模式下禁用未处理异常的回溯仅限Windows和macOS并显示此功能已禁用的消息。Windows专用参数参数说明--version-file FILE将FILE的版本资源添加到exe。--manifest FILE or XML将清单文件或XML串 添加到exe。-m FILE or XML–manifest的简写已弃用-r,--resource RESOURCE向Windows可执行文件添加或更新资源。RESOURCE是一到四元组FILE[,TYPE[,NAME[,LANGUAGE]]]FILE可以是数据文件或exe/dll文件。对于数据文件必须至少指定TYPE和NAME。LANGUAGE默认为0或者可以指定为通配符 ”*“ 来更新给定TYPE和NAME的所有资源。对于exe/dll文件如果TYPENAME和LANGUAGE被省略或指定为通配符 ”*“ 则FILE中的所有资源将被添加更新到最终的可执行文件中。此选项可以多次使用。--uac-admin使用此选项将创建一个清单该清单将在应用程序启动时请求提升。--uac-uiaccess使用此选项允许提升的应用程序与远程桌面一起工作。MacOS专用参数参数说明--argv-emulation为macOS应用程序启用argv仿真。如果启用初始的打开文档/URL事件由bootloader处理传递的文件路径或URL被附加到sys.argv。--osx-bundle-identifier BUNDLE_IDENTIFIERmacOS应用程序标识符为代码签名提供的默认唯一程序名称。通常的形式是反向DNS表示法中的分层名称。例如com.mycompany.department.appname默认第一个脚本的basename--target-architecture,--target-arch ARCH指定目标架构(仅macOS有效值x86_64、arm64、universal2)。允许在冻结应用程序的universal2和single-arch版本之间切换前提是python安装支持目标结构。如果没有指定目标结构则以当前运行的架构为目标。–codesign-identity IDENTITY代码签名标识仅macOS。使用提供的标识对收集的二进制文件和生成的可执行文件进行签名。如果未提供签名标识则执行临时签名。--osx-entitlements-file FILENAME在对收集的二进制文件进行代码签名时使用的授权文件仅限macOS。很少用的特殊参数参数说明--runtime-tmpdir PATH在onefile模式下提取库和支持文件。如果使用了该选项bootloader将忽略运行时操作系统定义的任何临时文件夹位置。仅当你知道你在做什么时再使用此选项_Meixxxxxx-folder将在这创建。请注意在POSIX系统上PyInstaller的bootloader不会对给定的路径执行shell-style的环境变量展开。因此在path中使用环境变量例如~或$HOME将不起作用。--bootloader-ignore-signals告诉bootloader忽略信号而不是将它们转发给子进程。这在某些情况下很有用例如一个上级进程同时向bootloader和子进程发出信号例如通过一个进程组以避免向子进程发出两次信号。spec文件创建spec当我们执行类似命令行pyinstaller options.. myscript.py时PyInstaller做的第一件事是构建一个specspecification文件myscript.spec。该文件存储在--specpath参数指定的目录中如果未指定默认是当前目录。PyInstaller通过spec文件配置对给定脚本名和提供的大多数选项进行编码。spec文件实际上是可执行的Python代码PyInstaller通过执行spec文件的内容来构建应用程序。对于PyInstaller的许多用途您不需要检查或修改spec文件。通常将足够的信息例如隐藏的导入作为选项提供给Pyinstaller命令并让它运行。在四种情况下修改spec文件是有用的当你想把数据文件和应用捆绑在一起时。当您想要包含PyInstaller无法从其他源获取到的运行时库.dll或.so文件时。当您想要向可执行文件添加Python运行时选项时。当您想要使用合并的公共模块创建多程序包时。使用下面的命令可以创建一个spec文件pyi-makespec options name.py [other scripts …]上例中[other scripts …]选项与前面的Pyinstaller命令的选项相同。该命令创建name.spec文件但不继续构建可执行文件。在你创建了一个spec文件并根据需要修改它之后你通过将spec文件传递给Pyinstaller命令来构建应用程序pyinstaller options name.spec在创建spec文件时大多数命令选项都在spec文件中设置。从spec文件构建时不能更改这些选项。如果它们是在命令行中给出的它们将被忽略并被spec文件中的选项所替换。当从spec文件构建时只有以下命令行选项有效--upx-dir、--distpath、--workpath、--noconfirm、--clean和-log-level。spec文件基本操作在PyInstaller创建一个spec文件将该spec文件可不是脚本文件作为命令行参数传入pyinstaller myscript.specPyInstaller命令将spec文件作为代码执行。绑定的应用就是通过执行spec文件创建的。下面是一个简短的例子一个最小的只有一个文件夹的应用程序的规范文件a Analysis([minimal.py], pathex[/Developer/PItests/minimal], binariesNone, datasNone, hiddenimports[], hookspathNone, runtime_hooksNone, excludesNone) pyz PYZ(a.pure) exe EXE(pyz,... ) coll COLLECT(...)上例中通过spec文件的配置创建Analysis、pyz、exe和coll四个类实例。Analysis创建时以脚本名称列表[minimal.py]作为输入分析所有导入和其他依赖项然后返回结果对象即a。结果对象属性记录了这些依赖scripts属性命令行中传入的 Python 脚本pure属性脚本代码中所须的纯 Python 模块pathx属性用于搜索导入的路径列表如使用PYTHONPATH包括由--paths选项给出的路径。binaries属性脚本所需的非 Python 模块包括由--add-binary选项给出的名称序列data属性应用程序中包含的非二进制文件包括由--add-data选项给出的名称序列。pyz实例用来操作.pyz归档文件它包含了a.pure文件中的所有Python模块exe实例是依托分析的脚本和pyz归档文件构建的。该对象用来创建可执行文件。coll实例根据所有其他部分来创建输出文件夹。在单文件模式下不需要调用COLLECTEXE实例接收所有的脚本、模块和二进制文件。修改spec文件以将附加值传递给Analysis和EXE。添加文件到绑定要将文件添加到包中您需要创建一个描述文件的列表提供给Analysis调用。当捆绑到单文件夹时添加的数据文件被复制到可执行文件所在的文件夹中。当您绑定到单可执行文件时添加的文件的副本被压缩到可执行文件中并在执行之前扩展到_MEIxxxxxx临时文件夹。这意味着当应用程序结束时单可执行文件对添加的文件所做的任何更改都将丢失。添加数据文件可以使用--add-data命令选项将数据文件添加到包中或者将它们作为列表添加到spec文件中。在spec文件中提供一个描述文件的列表作为Analysis的datas参数的值。数据文件列表是一个元组列表。每个元组有两个值这两个值都必须是字符串第一个参数指定当前系统中源文件路径或源文件路径列表。第二个参数指定目标路径即将指定的源文件复制到的目的文件夹。例如要在单目录应用的顶层添加一个README文件你可以这样修改spec文件a Analysis(... datas[ (src/README.txt, .) ], ... )如果使用命令行例子如下pyinstaller --add-data src/README.txt:. myscript.py您已经使datas参数成为一个单项列表。该项是一个元组其中第一个字符串表示现有文件是src/README.txt。该文件将被查找相对于spec文件的位置并复制到绑定应用的顶层。字符串可以使用 “/” 或 “\” 作为路径分隔符。您可以使用 “glob” 缩写来指定输入文件。例如要包含某个文件夹中的所有.mp3文件a Analysis(... datas [ (/mygame/sfx/*.mp3, sfx ) ], ... )所有在/mygame/sfx文件夹中的.mp3文件将被复制到绑定应用程序中名为sfx的文件夹中。如果您在单独的声明中增加的文件列表定义则spec文件更具可读性added_files [ ( src/README.txt, . ), ( /mygame/sfx/*.mp3, sfx ) ] a Analysis(... datas added_files, ... )你也可以使用通配符来圈定所有能匹配的内容added_files [ ( src/README.txt, . ), ( /mygame/data, data ), ( /mygame/sfx/*.mp3, sfx ) ]如上例/mygame/data文件夹将复制到绑定的data目录下。添加模块中的数据文件如果要添加的数据文件包含在Python模块中则可以使用pkgutil.get_data() 检索它们。例如假设应用程序的这一部分是一个名为helpmod的模块。模块下有脚本和数据文件如下helpmod __init__.py helpmod.py help_data.txt因为在脚本中包含有import helpmod这样的语句PyInstaller会在绑定的应用中创建这个文件夹。但是它只处理包含.py文件。数据文件help_data.txt不会被自动包含。要使它也被包含你需要在spec文件中添加一个数据元组a Analysis(... datas [ (helpmod/help_data.txt, helpmod ) ], ... )当脚本执行时通过使用其配置的基本文件夹路径找到help_data.txt如前一节所述。另外该数据文件作为模块的一部分因此您也可以使用标准库函数pkgutil.get_data() 检索其内容import pkgutil help_bin pkgutil.get_data( helpmod, help_data.txt )这将以二进制字符串的形式返回help_data.txt文件的内容。如果它实际上是字符你必须对其解码help_utf help_bin.decode(UTF-8, ignore)添加二进制文件小提示二进制文件指的是动态链接库、共享对象文件等PyInstaller将在这些文件中搜索更多的二进制依赖项。像图像和pdf这样的文件应该放入data中。您可以使用--add-binary命令参数将二进制文件添加到包中或者将它们作为列表添加到spec文件中。在spec文件中创建一个描述所需文件的元组列表。将元组列表赋值给Analysis的binaries参数。添加二进制文件的工作方式与添加数据文件类似。如添加二进制文件中所述每个元组应该有两个值第一个参数指定当前系统中文件的位置。第二个参数指定文件复制的目标文件夹。通常PyInstaller通过分析导入的模块来了解.so和.dll库但有时不清楚是否导入了模块在这种情况下使用--hidden-import命令参数。但即使这样也可能找不到所有的依赖关系。假设您有一个C或Pythone C API的模块special_ops.so 您的程序导入了special_ops 且PyInstaller查找并包含special_ops.so。但假如special_ops.so使用到了libiodbc.2.dylib库这时PyInstaller是找不到找不到libiodbc.2.dylib依赖项。你可以这样把它添加到绑定中a Analysis(... binaries[ ( /usr/lib/libiodbc.2.dylib, . ) ], ...或者使用命令行a Analysis(... binaries[ ( /usr/lib/libiodbc.2.dylib, vendor ) ], ...与数据文件一样如果要添加多个二进制文件为了提高可读性可以在单独的语句中创建列表并将名称传递列表。使用TOC添加文件Analysis对象生成几个内容表格Table of ContentsTOC列表这些列表提供了要收集的文件信息。根据文件的类型或功能将这些文件分组到不同的列表中例如Analysis.scripts: 应用脚本集合Analysis.pure: 纯 Python 模块集合Analysis.binaries: 二进制扩展模块如.dll或.so等、共享动态链接库集合Analysis.datas: 数据文件集合生成的TOC列表被传送到spec文件中的各个构建目标如PYZ、EXE和COLLECT。每个TOC列表的每项是三个元素的元组(dest_name, src_name , typecode)其中dest_name是目标文件名即冻结应用程序中的文件名src_name是源文件名或收集文件的路径typecode是一个表示文件或条目类型的字符串。在内部PyInstaller包含许多typecode值但对于正常情况你只需要知道这些typecode说明dest_namesrc_nameDATA数据文件冻结应用的应用名构建系统的文件全路径BINARY二进制模块或共享库冻结应用的应用名构建系统的文件全路径EXTENSIONPython 二进制扩展冻结应用的应用名构建系统的文件全路径OPTIONPyInstaller或 Python 的运行时选项参数选项名称和可选值以空格分隔。忽略相对于顶级应用程序目录目标名称对应于冻结应用程序中的最终名称。它可能包含路径元素例如extras/mydata.txt。假定BINARY和EXTENSION类别的组成项表示包含可加载的可执行代码的文件例如动态库。通常EXTENSION用于表示Python扩展模块例如由Cython编译的模块。这两种类别的处理方式相同PyInstaller扫描它们以寻找额外的链接时依赖项并收集发现的任何依赖项。在某些操作系统上二进制文件和扩展需要经过额外的处理例如针对链接时间依赖性的路径重写和macOS上的代码签名。在Analysis生成的TOC列表传递给构建目标之前可以在spec文件中修改它们以包含额外的条目最好是通过二进制文件或Analysis的数据参数传递要包含的额外文件或删除不需要的条目。然而由于定义松散和语义冲突导致TOC类的不足TOC类的使用已被弃用。TOC列表现在是普通列表的实例PyInstaller执行显式列表条目重复删除。显式规范化在Analysis实例化结束时执行此时列表存储在类属性中例如Analysis.datas和Analysis.binaries)。类似地一旦构建目标EXE、PYZ、PKG、COLLECT、BUNDLE将输入TOC列表合并到最终列表中也将执行显式列表规范化。使用Tree类Tree类提供了一种方便的方法来创建TOC列表Tree(root, prefixrun-time-folder, excludesstring_list, typecodecode | DATA )root参数是一个字符串表示到目录的路径。它可以是绝对的也可以是相对于spec文件所在目录的。prefix参数是可选的是应用程序目录中要收集文件的子目录的名称。如果不指定或设置为None则文件将被收集到顶级应用程序目录中。exclude参数也是可选的是一个字符串列表用来匹配root中需要剔除的文件。列表中的组合项可以是用来排除具有此基本名称的文件或文件夹的匹配名一个glob模式如*.ext匹配的文件将被排除typecode参数也是可选的指定TOC类型码该值分配给TOC列表中的所有条目。默认值是DATA适用于大多数情况。extras_toc Tree(../src/extras, prefixextras, excludes[tmp, *.pyc])这将创建extras_toc作为TOC列表其中包含来自相对路径./src/extras的所有文件省略那些位于名为TMP的文件夹中的所有问价或具有.pyc扩展名的文件。这个TOC中的每个元组有dest_name的格式为file:extras/{filename}。src_name对应于.. /src/extras相对于spec文件所在目录目录下的文件的完整绝对路径。typecode类型码的默认用类型DATA。下面案例显示创建一个列一些二进制模块的TOC的示例cython_mods Tree(..src/cy_mods, excludes[*.pyx, *.py, *.pyc], typecodeEXTENSION)创建一个TOC列表其中包含cy_mods目录中每个文件除了扩展名为.pyx、.py或.pyc的文件。TOC中的元组表示如下与dest_name指定的名字相匹配的文件所有文件都收集在顶级应用程序目录中。src_name对应于../src/cy_mods目录下的所有的文件绝对路径。类型码为EXTENSION也可以使用BINARY类型码。指定 Python 解释器选项pyinstaller冻结的应用在嵌入Python解释器中独立运行时不能采用典型的方式将选项传递给Python解释器包括冻结的应用程序与目标系统上存在的python环境完全隔离通过环境变量如PYTHONUTF8和PYTHONHASHSEED获取参数值不可能因为命令行参数是为应用程序保留的不能通过命令行参数如-v和-o。因此PyInstaller提供了一个选项通过其自己的options机制为应用程序的Python解释器指定永久运行时选项。要传递运行时选项需创建一个由三元素元组组成的列表( option string , None, option )并将其作为附加参数传递给EXE在关键字参数之前。选项元组的第一个元素是选项字符串第二个总是None第三个总是option。spec文件的一个示例修改为指定两个运行时选项options [ (v, None, OPTION), (W ignore, None, OPTION), ] a Analysis( ... ) ... exe EXE( pyz, a.scripts, options, # -- the options list, passed to EXE exclude_binaries... ... )该机制支持以下选项v或verbose增加sys.flags.Verbose的值该值影响模块每次初始化时将消息写入标准输出。这个选项相当于Python的-v命令行选项。当通过PyInstaller自己的--debug imports选项启用详细导入时它会自动启用。u或unbuffered启用未缓冲的标准输出和标准错误。相当于Python的-u命令行选项。O或optimize增加sys.flags.optimize的值。相当于Python的-O命令行选项。W arg通过 Python 的W-options来控制警告消息。X arg通过 Python 的X-options传递。utf8和dev x-options控制UTF-8模式和开发者模式由PyInstaller的bootloader显式解析并在解释器预初始化期间使用其余的x-options只是传递给解释器配置。hash_seedvalue通过冻结应用程序使用该值去设置 Python 的哈希种子。相当于PYTHONHASHSEED环境变量。下面举例说明这些语法options [ # Warning control (W ignore, None, OPTION), # disable all warnings (W ignore::DeprecationWarning, None, OPTION) # disable deprecation warnings # UTF-8 mode; unless explicitly enabled/disabled, it is auto enabled based on locale (X utf8, None, OPTION), # force UTF-8 mode on (X utf81, None, OPTION), # force UTF-8 mode on (X utf80, None, OPTION), # force UTF-8 mode off # Developer mode; disabled by default (X dev, None, OPTION), # enable dev mode (X dev1, None, OPTION), # enable dev mode # Hash seed (hash_seed0, None, OPTION), # disable hash randomization; sys.flags.hash_randomization0 (hash_seed123, None, OPTION), # hash randomization with fixed seed value # Force enable/disable GIL in python 3.13 built with Py_DISABLE_GIL / free-threading option (PEP-703) (X gil1, None, OPTION), # force-enable GIL (X gil0, None, OPTION), # force-disable GIL ]设置SPLASH目标要让bootloader显示启动屏幕必须在构建时调用启动目标使用命令行选项--splash IMAGE_FILE。创建spec文件时可以添加这个类。默认情况下禁用显示可选文本的选项text_posNone。Splash目标看起来是这样的a Analysis(...) splash Splash(image.png, binariesa.binaries, datasa.datas, text_pos(10, 50), text_size12, text_colorblack)Splash将启动屏幕所需的资源捆绑到一个文件中该文件将包含在CArchive中。Splash有两个输出一个是它本身另一个存储在Splash .binaries中。两者都需要传递给其他构建目标以便启用启动屏幕。要在单文件应用程序中使用闪屏请遵循以下示例a Analysis(...) splash Splash(...) # onefile exe EXE(pyz, a.scripts, splash, # -- both, splash target splash.binaries, # -- and splash binaries ...)为了在单目录应用程序中使用启动屏幕只需要做一个小的更改。splash.binaries属性必须移动到COLLECT目标中因为splash二进制文件不需要包含在可执行文件中a Analysis(...) splash Splash(...) # onedir exe EXE(pyz, splash, # -- splash target a.scripts, ...) coll COLLECT(exe, splash.binaries, # -- splash binaries ...)在Windows/macOS上支持逐像素透明的图像。这允许非矩形启动屏幕图像。在Windows上图像的透明边界是硬切割的这意味着不支持褪色的透明值。Linux上没有针对非矩形窗口的通用实现因此不支持具有每像素透明度的图像。可用的全局变量当spec文件执行时它可以访问一组有限的全局名称。这些名称包括PyInstaller定义的类AnalysisBUNDLECOLLECTEXEMERGEPYZTOCTree和Splash这些在前面的章节中讨论过。其他全局变量包含有关构建环境的信息变量说明DISTPATH存放应用程序的dist文件夹相对路径。默认路径是相对于当前目录的。如果使用--distpath选项DISTPATH包含该值。HOMEPATHPyInstaller发行版的绝对路径通常在当前Python 的site-packages文件夹中。SPEC给出给Pyinstaller命令的完整spec文件参数例如myscript.spec或source/myscript.spec。SPECPATH由os.path.split()返回的SPEC值的路径前缀。specnmspec文件的名称例如myscript。workpath构建目录的路径。默认值是相对于当前目录的相对路径。如果使用了workpath选项则workpath包含该值。WARNFILE构建目录中警告文件的完整路径例如build/warn-myscript.txt。