Python打包-PyInstaller

 文章导读     |      2025-02-13

使用PyInstaller将Python程序打包成单独的.exe可执行文件

写在本文前:

 

为什么要出这篇文章?

Python作为一种流行的编程工具,随着近年来人工智能AI的快速发展,逐渐受到大众的倾心。但python作为一个应用,需要配置特定的运行环境,同时,由于python大量的第三方库,导致用户使用python编程的门槛也变高。这些都意味着用户需要在自己的电脑上安装python环境和特定的第三方库。而且大部分的软件都自带有GUI操作界面(Graphical User Interface),方便用户在不需要看懂程序底层代码的情况下,也可以快速地上手该软件。而python写的代码一般默认是没有GUI界面的,这些都导致了用户与python程序的交互变得不那么愉快。

 

因此,将Python 程序打包成一个可独立执行的文件(软件包)是非常有必要的,而PyInstaller就是这样一个优秀的应用。它通过读取已编写好的 Python 脚本,分析代码执行需要的模块和库,然后将其依赖库一同打包,并转成可直接脱离于python环境下独立运行的程序。目前支持 Windows、Linux 和 Mac OS 系统。

 

PyInstaller是一款强大的免费开源工具,允许开发者将Python应用程序及其所有依赖项打包成为一个独立的、跨平台的可执行文件。比如在Windows操作系统我们可以将Python脚本转换为.exe格式,使用户无需依赖Python环境就能直接运行脚本程序。

 

接下来,笔者将介绍如何使用PyInstaller将Python程序打包成单独的exe文件。

 

首先,请确保已经安装了Python环境PyInstaller库。

其中,PyInstaller库的安装方法:命令行窗口CMD)中执行以下命令:pip install pyinstaller

 

1、编写并测试Python程序

确保Python程序(如script.py)能够在本地正常运行。

打开命令行界面,通过cd命令切换到包含待打包的该Python源代码的目录如笔者电脑是:C:\Users\ygb76486126\。执行命令:cd C:\Users\ygb76486126

 

2、正式打包

要将script.py打包为单个EXE文件,打开命令行并导航至包含该脚本的目录,然后执行以下命令:pyinstaller -F C:\Users\ygb76486126\script.py

 

-F标志指定PyInstaller生成一个单一的可执行文件,包含所有依赖的文件夹结构。

3、添加窗口化运行选项(可选)

如果您希望生成的应用程序在运行时没有命令行窗口(仅适用于GUI应用),可以添加-w参数:

pyinstaller -F -W C:\Users\ygb76486126\script.py

4、设置程序图标(可选)

若需为生成的exe文件添加自定义图标,应先准备好.ico格式的图标文件,并将它放在script.py同一目录下,然后在打包命令中包含-i选项:

pyinstaller -F -w -i C:\Users\ygb76486126\icon.ico C:\Users\ygb76486126\script.py

 

5、打包数据文件和其他资源

 

如果程序引用了外部数据文件(如图片、配置文件或字体),您需要确保这些文件也被包含在打包中。可以使用–add-data选项指定文件及其在打包后的位置:

pyinstaller -F -w -i C:\Users\ygb76486126\icon.ico –add-data “data_file.dat;relative_path_in_dist” C:\Users\ygb76486126\script.py

 

这里的–add-data “data_file.dat;relative_path_in_dist”表示将data_file.dat从当前目录复制到输出目录的relative_path_in_dist下。

 

6、生成和查看输出结果

执行上述命令后,PyInstaller会在当前目录下创建一个名为dist的文件夹,其中包含了打包后的可执行文件。在该目录下可以找到名为script.exe的文双击即可在没有Python环境的Windows系统上运行。

 

更多PyInstaller打包参数说明

· -F 或 –onefile:将所有内容打包到一个exe文件中。

· -D 或 –onedir:创建一个包含exe和所有依赖文件的目录结构。

· -w 或 –windowed:如果程序是GUI应用,运行时不显示控制台窗口。-c 有黑窗口,-w 去掉黑窗口

· -i 或 –icon=FILE.ico:指定程序的图标文件。

· –add-data PATH;DESTPATH:将指定的文件或目录添加到打包结果中,并指定在程序内部访问的相对路径。

· –hidden-import MODULE_NAME:强制导入未被自动检测到的模块。

· –exclude-module MODULE_NAME:排除特定模块,防止其被打包。

· –clean:在重新打包时清理旧的构建文件。

 

常用的一些打包命令:可根据自己需要进行适当修改。

无黑窗口且程序带有logo的单独exe程序

  •  
pyinstaller -F -w -i C:\Users\ygb76486126\logo.ico C:\Users\ygb76486126\script.py

 有黑窗口且程序带有logo的单独exe程序

  •  
  •  
pyinstaller -F  -i C:\Users\ygb76486126\logo.ico C:\Users\ygb76486126\script.pypyinstaller -F -c -i C:\Users\ygb76486126\logo.ico C:\Users\ygb76486126\script.py

 程序带有logo,生成程序包含文件夹(内有依赖库)

  •  
  •  
pyinstaller -D -i C:\Users\ygb76486126\logo.ico C:\Users\ygb76486126\script.py # 有黑窗口pyinstaller -D -w -i C:\Users\ygb76486126\logo.ico C:\Users\ygb76486126\script.py  # 无黑窗口

三、注意事项

· 

PS:需考虑依赖问题确保所有Python依赖库都已经在当前环境中正确安装。对于某些复杂的应用程序,您可能还需要考虑使用virtualenv或conda创建独立的环境,以隔离和精确控制所需的库版本。