时间: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。保险起见,在终端中强制采用虚拟环境中的pip来安装:
D:\myProject\virtualEnvironment\Scripts\python -m pip install pyinstaller
安装完成之后,在虚拟环境中“Scripts”目录下可以看到一些新增的应用程序,其中pyinstaller.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应用程序的图标就是我们自定义的图标了。