当前位置:主页 > 软件编程 > Python代码 >

如何将Python脚本打包成exe应用程序介绍

时间:2022-06-24 09:00:03 | 栏目:Python代码 | 点击:

前言

我们有时候会编写Python脚本来辅助我们执行一些重复的操作。但是这些脚本在实际使用中会有一些不方便:

我们通常需要进入终端或者IDE中来运行脚本(当然,有办法可以实现双击脚本文件直接运行,但这不在今天的讨论范围内)。

如果把脚本迁移至其他电脑上,那么Python环境变化,比如新电脑上没有安装Python,或者缺乏该脚本所调用的包等,脚本有很大概率无法正常运行。

这时候,我们可以将脚本打包成一个可以独立运行的应用程序,点开即用,解决上述问题。第三方包Pyinstaller可以实现将Python脚本打包成.exe格式的应用程序,现在以一个例子来介绍使用方法。

首先介绍一下开发的环境。

按照开发习惯,我们的Python脚本在虚拟环境中开发。

项目的路径:D:\myProject\

虚拟环境路径:D:\myProject\virtualEnvironment\

脚本存放路径:D:\myProject\code\

首先在VS code中运行脚本看看效果。这个脚本可以生成一个科研软件所需的csv格式数据,具有一个简单的GUI界面,方便用户设置生成内容。

我们要做的就是将.py格式、需要依赖开发环境的脚本文件打包成一个可以独立运行的.exe格式应用程序。

安装Pyinstaller

脚本在虚拟环境中开发,因此我们也在这个虚拟环境中安装Pyinstaller。保险起见,在终端中强制采用虚拟环境中的pip来安装:

D:\myProject\virtualEnvironment\Scripts\python -m pip install pyinstaller

安装完成之后,在虚拟环境中“Scripts”目录下可以看到一些新增的应用程序,其中pyinstaller.exe就是用于打包脚本的。

将脚本打包成exe应用程序

使用Pyinstaller将Python脚本打包成exe应用程序,最基础的命令是:

pyinstaller codeName.py

为了提高打包成功率,让打包过程更加清晰可控,我推荐以下步骤。

首先打开一个终端,cd至保存exe应用程序的目录。例如,我们在项目目录中新建一个“exe”文件夹,并cd至此:

cd D:\myProject\exe\

然后命令pyinstaller对脚本进行打包:

D:\myProject\virtualEnvironment\Scripts\pyinstaller -F D:\myProject\code\myScript.py

在上述指令中,

D:\myProject\virtualEnvironment\Scripts\pyinstaller是pyinstaller的完整路径。

D:\myProject\code\myScript.py是被打包的Python脚本的完整路径。

D:\myProject\exe\是存放生成的exe应用程序的目录。

打包过程是清晰明确的。

打包完成后,我们查看D:\myProject\exe\目录,可以看到一些新建的文件夹,进入D:\myProject\exe\dist目录,可以看到生成的myScript.exe应用程序。

双击应用程序,脚本成功启动。

这样,脚本所需的环境已经被打包至.exe程序中,脚本的运行将不再需要依赖外部的Python开发环境了。将myScript.exe拷贝至另一台电脑,即使电脑未安装Python,脚本也可以顺利启动。

Python脚本有时候需要调用外部文件,这会涉及到“根目录”和“相对路径”的问题。经过实测,当我们把脚本打包成exe应用程序时,exe应用程序所在的目录即为“根目录”。

进阶:消除命令窗口、自定义图标

以上操作所打包生成的exe应用程序在启动时会打开一个黑色的命令窗口,不美观,我们可以在执行打包命令时添加 -w 来消除这个命令窗口:

D:\myProject\virtualEnvironment\Scripts\pyinstaller -F -w D:\myProject\code\myScript.py

这样生成的exe应用程序在启动时就不会有这个黑色的命令窗口了。

另外,生成的exe应用程序的图标亦可自定义,支持.ico格式的图标文件。在执行打包命令时添加-i来指定图标文件即可:

D:\myProject\virtualEnvironment\Scripts\pyinstaller -F -w -i D:\myProject\myIcon.ico D:\myProject\code\myScript.py

这样生成的exe应用程序的图标就是我们自定义的图标了。

总结

您可能感兴趣的文章:

相关文章