[Python] pyinstaller--将python程序打包为不依赖于本机环境的独立可执行文件

概述

Pyinstaller是一个用于将Python程序打包成可执行文件的工具。它可以将Python程序打包成单个可执行文件,无需安装Python解释器和第三方库,方便程序的分发和部署。

Pyinstaller支持Windows、Linux和MacOS等多个平台,可以将Python程序打包成对应平台的可执行文件。打包完成后的可执行文件可以直接在对应平台使用,无需安装任何环境或者依赖。

Pyinstaller的使用非常简单,只需要在命令行中执行Pyinstaller命令,并指定要打包的Python程序的入口文件即可。Pyinstaller会自动分析程序的依赖关系,并将所有依赖的模块和库打包到可执行文件中。

打包完成后,可以在dist目录下找到生成的可执行文件。

除了将Python程序打包成可执行文件外,Pyinstaller还支持许多高级功能,如自定义打包选项、添加图标、加密代码等。这些功能可以通过在命令行中指定参数或创建配置文件来实现。

Pyinstaller的优点包括:

  • 简单易用:Pyinstaller的使用非常简单,只需要执行一个命令即可将Python程序打包成可执行文件。
  • 跨平台支持:Pyinstaller支持多个平台,可以将Python程序打包成对应平台的可执行文件。
  • 自动化打包:Pyinstaller会自动分析程序的依赖关系,并将所有依赖的模块和库打包到可执行文件中。
  • 高级功能:Pyinstaller支持许多高级功能,如自定义打包选项、添加图标、加密代码等。

Pyinstaller的缺点包括:

  • 打包后文件较大:由于Pyinstaller会将所有依赖的模块和库打包到可执行文件中,因此打包后的文件较大。
  • 不支持所有第三方库:Pyinstaller并不支持所有第三方库,有些库可能需要手动配置才能正确打包。
  • 可执行文件可能被反编译:由于可执行文件中包含了程序的源代码,因此可能会被反编译,导致代码泄露。

但是,总的来说,Pyinstaller是一个非常好用的工具,方便程序的分发和部署。下面介绍它的使用方法。

使用方法

下面是一些常用的Pyinstaller参数和选项及其含义,我根据使用频率将其分为了两级。

高频参数

  • -h:显示帮助信息。
  • -F:将Python程序打包成单个可执行文件。
  • -D:将Python程序打包成多个文件,包括可执行文件和依赖的模块和库。
  • -w/--windowed:使用窗口模式,不显示命令行窗口。
  • -c/--console:使用控制台模式,显示命令行窗口。
  • -n/--name:指定生成的可执行文件的名称。
  • -i/--icon:指定可执行文件的图标。
  • --add-data:指定需要打包的数据文件。
  • --add-binary:指定需要打包的二进制文件。
  • -p:指定Python模块的搜索路径。
  • -y:自动覆盖输出目录中的现有文件。
  • --clean:在打包之前清除缓存和临时文件。
  • --distpath:指定输出目录。
  • --workpath:指定工作目录。
  • --specpath:指定.spec文件的输出目录。

低频参数

  • -s:生成一个控制台程序,但不显示Python解释器的输出。
  • -v:显示详细的输出信息。
  • --hidden-import:指定需要导入的隐藏模块。
  • --additional-hooks-dir:指定额外的钩子目录。
  • --exclude-module:指定不需要打包的模块。
  • --key:指定加密代码的密钥。
  • --upx-dir:指定UPX压缩工具的路径。
  • --upx-exclude:指定不需要压缩的文件类型。
  • --upx-compress-level:指定UPX压缩级别。
  • --log-level:指定日志输出级别。
  • --runtime-tmpdir:指定运行时临时目录。
  • --debug:生成调试信息。
  • --strip:去除调试信息。
  • --noconfirm:不显示确认提示。

用例

这里给出一些常见的用法便于理解和使用

pyinstaller -F myprogram.py

PyInstaller会将myprogram.py文件打包成单个可执行文件,并将所有依赖的模块和库打包到可执行文件中。

pyinstaller -F --distpath=./dist --icon=myicon.ico myprogram.py

PyInstaller会将myprogram.py文件打包成单个可执行文件,并将所有依赖的模块和库打包到可执行文件中。生成的可执行文件将保存在./dist目录下,并使用myicon.ico作为图标。

pyinstaller -D --add-data "data.txt;." myprogram.py

使用-D参数可以将Python程序打包为多个文件,使用--add-data参数指定需要打包的数据文件。

--add-data参数的格式是"源文件;目标目录",其中源文件是要打包的文件路径,目标目录是打包后文件中的目标路径。

在示例中,将data.txt文件打包,并指定目标目录为当前目录(.)。

打包完成后,可以在生成的可执行文件所在的目录中找到data.txt文件。在程序运行时,可以使用相对路径或绝对路径来访问该数据文件。

请注意,--add-data参数可以多次使用,以添加多个数据文件。每个数据文件都需要指定源文件和目标目录。