Python第三方库 — PyInstaller

本文介绍如何使用PyInstaller将Python脚本打包成独立的可执行文件。涵盖了安装PyInstaller的方法、命令行参数详解及如何定制Spec文件等内容。

快速入门

安装

通过 PyPI 安装

pip3 install pyinstaller

打包

简单来说,打包分为两个步骤:

  1. 进入你的程序目录
  2. 针对你的Python程序脚本执行如下命令:
    pyinstaller yourprogram.py
    
    这将会在dist子目录中生成打好的包

基本使用

命令行语法

pyinstaller 命令的语法是:

pyinstaller [选项脚本1 [脚本2 …] | spec文件

选项

常规选项
选项说明
-h, --help显示当前这个帮助信息,并退出
-v, --version显示程序版本信息,并退出
--distpathDIR指定打包的应用程序所放置的位置(默认: ./dist)
--workpath WORKPATH指定所有临时工作文件(例如: .log 和 .pyz 等等)所放置的位置,.log、.pyz 等等(默认: ./build)
-y, --noconfirm在不提示确认的情况下,替换输出目录(默认: SPECPATH/dist/SPECNAME)
--upx-dir UPX_DIRUPX实用程序的路径(默认:搜索执行路径)
-a, --ascii不包括对Unicode编码的支持(默认:如果可用,就会尽可能包括)
--clean在构建之前,清理PyInstaller的缓存,并且移除临时文件
--log-level LEVEL指定在构建时,控制台消息的详细程度。级别(LEVEL)可能是TRACE、DEBUG、INFO、WARN、ERROR和CRITICAL(默认: INFO)之一
输出相关
选项说明
-D, --onedir创建一个包含了一个可执行文件的单目录打包程序(默认)
-F, --onefile创建一个单文件打包的可执行程序
--specpathDIR存放生成的spec文件的目录(默认:当前目录)
-n NAME, --name NAME要分配给打包应用程序和spec文件的名字(默认:第一个脚本文件的基本名称)
打包与搜索相关
选项说明
--add-data <SRC;DEST or SRC:DEST>要添加到可执行文件的额外的非二进制文件或目录。路径分隔符是特定于平台的(os.pathsep,即,Windows平台是 “;” ,而对于大多数Unix平台是 “:”)。这个选项可以使用多次
--add-binary <SRC;DEST or SRC:DEST>要添加到可执行文件的额外的二进制文件。这个选项可以使用多次
-p DIR, --paths DIR用于导入的搜索路径(类似于使用PYTHONPATH)。允许以 “:” 分隔多个路径,或者多次使用该选项
--hidden-import MODULENAME, --hiddenimport MODULENAME声明脚本代码中不可见的一个导入。该选项可以使用多次
--additional-hooks-dir HOOKSPATH用于搜索钩子的额外路径。这个选项可以使用多次
--runtime-hook RUNTIME_HOOKS定制运行时钩子文件的路径。一个运行时钩子是与可执行文件绑在一起的代码,并且会在任何其他代码或模块之前执行,以设置运行时环境的特定功能。该选项可以使用多次
--exclude-module EXCLUDES需要忽略的可选模块或包(使用Python名,而不是路径名),就像它没有被找到一样。这个选项可以使用多次
--keyKEY用于加密Python字节码的密钥
生成方式
选项说明
-d, --debug告知引导加载器,让其在初始化和启动打包的应用程序时,发送进度消息。用于诊断缺少导入的问题
-s, --stripApply a symbol-table strip to the executable and shared libs。(建议不要在 Windows 上使用)
--noupx不要使用UPX(即使它可用),在 Windows 和 *nix 之间的作用不同
很少使用的特殊选项

打包

在大多数的简单情况下,将当前目录设置为你myscript.py 程序的位置,并执行:

pyinstaller myscript.py

打包过程

PyInstaller会分析myscript.py并:

  1. myscript.spec写入到与myscript.py相同的目录中
  2. 在与myscript.py所在的相同目录中创建一个build 目录(如果不存在的话)
  3. build 目录中写入一些日志文件(log files)工作文件(working files)
  4. 在与myscript.py所在的相同目录中创建一个dist 目录(如果不存在的话)
  5. dist 目录中写入myscript 可执行目录
  6. dist 目录中,你可以找到你打算分发给用户的已打包好的应用程序(bundled app)

打包多个程序脚本文件

通常情况下,在命令行你只会上声明一个脚本文件,如果你声明了多个,那么所有的脚本文件都会被分析,并包含到输出中。 但是,第一个声明的脚本提供了spec文件的名称与可执行目录或文件的名称。并且,它的代码也是在运行期间(run-time)第一个被执行的。

关于Spec文件的说明

针对某些特定的用途,你可以通过编辑myscript.spec的内容来定制。在完成编辑后,你需要向pyinstaller 命令提供这个spec文件,而不再是那个脚本

pyinstaller myscript.spec

myscript.spec 文件包含了由pyinstaller(或pyi-makespec)以脚本文件作为参数运行时所指定的选项所提供的大部分信息。 在使用spec文件运行pyinstaller时,通常不需要指定任何选项。因为,通过spec文件构建时,只有少数命令行选项会起作用。

通过路径指定

你甚至可以通过指定脚本文件路径spec文件路径来运行pyinstaller,例如:

  • Linux/Mac上:
    pyinstaller options… ~/myproject/source/myscript.py
    
  • Windows上:
    pyinstaller "C:\Documents and Settings\project\myscript.spec"
    

转载于:https://my.oschina.net/iweans/blog/1809749

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值