如何将Python脚本打包成exe应用程序介绍
作者:南贝塔 发布时间:2021-12-26 20:42:07
前言
我们有时候会编写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应用程序的图标就是我们自定义的图标了。
来源:https://blog.csdn.net/snsb_csdn/article/details/122804590


猜你喜欢
- 有的时候我们在获取到目标电脑时候如果对方电脑又python 编译环境时可以利用python 反弹shell主要用到python os库和so
- Perl对文件的操作,跟其它的语言类似,无非也就是打开,读与写的操作。1. 打开文件#! c:/perl/bin/perl -w use u
- 以前写过《 10条影响CSS渲染速度的写法与建议》,今天放些数据出来,供参考;首先说明一点,CSS对网页的最后渲染出来的速度影响非
- 1.运行效果如图所示2.实现代码如下<!DOCTYPE html><html><head>
- 1. 下载MySQL Community Server 5.6.35下载地址http://dev.mysql.com/downloads/m
- 下面是在深度学习数据集处理过程中可能会用到的一个小程序,帮助我们根据图片文件的名字来分开图片:import osimport shutilp
- 本文实例讲述了Python用于学习重要算法的模块pygorithm。分享给大家供大家参考,具体如下:这是一个能够随时学习重要算法的Pytho
- 我们常常看到一个这样的表达式 A=lambda x:x+1可能会一头雾水不知道怎么计算 最基本的理解就是def A(x):retu
- 最近稍稍有点空闲时间,于是重新温习了一下之前学习过的python基础。废话不多说,记录一下自己的所得。首先,安装什么的不在本人的温习范围,另
- 本文实例为大家分享了微信小程序实现通讯录功能的具体代码,供大家参考,具体内容如下微信小程序模仿通讯录功能需要用到scroll-view标签思
- 可以结合sp_MSforeachdb再遍历所有用户数据库查看所有表的尺寸大小,注意它的参数@sql不能超过nvarchar(2000),这里
- #常用的几个代码--查询临时表空间select name from v$tempfile;--查询表空间select name from v
- 导言:到目前为止,我们的教程围绕的是text数据。然而,很多应用程序既需要处理text数据,也需要处理二进制数据。比如招聘网站可能需要用户上
- 具体代码如下所示:import tkinter as tkimport tkinter.messageboximport copyimpor
- 前言Javascript 团体的每个人都喜欢新的API,语法更新以及特性,它们提供了更好的,更智能,更有效的方式以完成重要的任务。继上一篇的
- 最终的目标是想这样的,在JavaScript里写一个swing来实现确定取消,来决定是否执行这个功能的,但是在执行的过程中,出现了一点问题,
- 一、在访客的内心深处做导航我讨厌迷失,不管是在道路上或是在线网络上。猜想一下?您的访客也是这样的。就像我们期望看到的道路上的路标一样,来帮助
- 1. 问题描述水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个3位数,它的每个位上的数字的3次幂
- 目前lnmp一键安装包比较多的问题就是502 Bad Gateway,大部分情况下原因是在安装php前,脚本中某些lib包可能没有安装上,造
- 正则表达式正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为&q