将python脚本打包为exe可执行文件
技术背景
在很多情况下,编程人员是在Linux环境下完成的编程任务,但是更多的使用人员是在Windows环境下的,比方说,在参考链接1的文章中提到:
那么我们就不得不考虑一个环境转化的问题。python作为一门通用编程语言,本身可以在不同的环境下运行,但可执行文件不是。就目前来说,最便捷的方法还是在各自的平台上去用pyinstaller编译可执行文件。
编写python脚本
当我们编译可执行文件时,首先我们需要一个可以执行的python任务脚本,这个脚本的内容可以是一系列复杂的运算,可以是显示一张图片,也可以是一整个完整的PC端软件。这里我们所写的一个任务是,用numpy创建一个离散的正弦函数图像,然后使用matplotlib将其展示出来:
# plot.py import numpy as np import matplotlib.pyplot as pltx = np.linspace(0,10,1000) y = np.sin(x)plt.figure() plt.plot(x,y,'o',color='green') plt.show()
需要注意的是,如果是创建的python脚本中依赖于一些打印输出函数,那在编译可执行文件时需要指定弹出终端窗口,否则程序没办法正确执行。
安装pyinstaller并编译可执行文件
pyinstaller也是一个跨平台的python工具,在windows和linux上面都可以使用pip来进行安装和管理:
python3 -m pip install pyinstaller
先以linux平台为例,安装pyinstaller成功之后,可以直接执行如下指令对python脚本进行编译:
$ pyinstaller -F plot.py ... $ ll total 24 drwxr-xr-x 4 dechin dechin 4096 Apr 20 14:26 ./ drwxr-xr-x 4 dechin dechin 4096 Apr 19 22:31 ../ drwxr-xr-x 3 dechin dechin 4096 Apr 20 14:26 build/ drwxr-xr-x 2 dechin dechin 4096 Apr 20 14:28 dist/ -rw-r--r-- 1 dechin dechin 160 Apr 20 14:21 plot.py -rw-r--r-- 1 dechin dechin 808 Apr 20 14:26 plot.spec $ ll dist/ total 264376 drwxr-xr-x 2 dechin dechin 4096 Apr 20 14:28 ./ drwxr-xr-x 4 dechin dechin 4096 Apr 20 14:26 ../ -rwxr-xr-x 1 dechin dechin 270710928 Apr 20 14:28 plot*
我们可以看到,编译成功后,在当前的路径下回生成build和dist文件夹,其中可执行文件就放在dist路径下。在linux下可以直接使用 ./plot
的指令来运行该可执行文件,效果如下:
关于pyinstaller的指令,常用的还有指定弹出终端窗口的指令(用于输出程序打印内容)以及程序显示logo的指令(一般为ico文件):
pyinstaller -F -w plot.py # 弹出黑色对话框 pyinstaller -F -i ico_file.ico plot.py # 指定显示图标
在linux环境下完成编译后,我们可以看到生成的可执行文件也只能在linux环境下运行。为了生成windows环境下可以运行的exe可执行文件,我们切换到windows系统下来运行:
Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/4/20 14:28 dist d----- 2022/4/20 14:26 build ------ 2022/4/20 14:26 808 plot.spec ------ 2022/4/20 14:21 160 plot.pyPS > pyinstaller -F .\plot.py ... 47314 INFO: Appending PKG archive to EXE 62696 INFO: Building EXE from EXE-00.toc completed successfully. PS > ls .\dist\目录: \\wsl.localhost\Ubuntu-18.04\home\dechin\projects\project0331\distMode LastWriteTime Length Name ---- ------------- ------ ---- ------ 2022/4/20 14:28 270710928 plot ------ 2022/4/20 14:40 36811075 plot.exe
也是同样的运行方法,编译完成后在dist文件夹下生成了一个新的可执行文件 plot.exe
,执行效果如下:
在windows环境下运行软件经常会弹出一些窗口,我们直接放行就好了:
可以看到,虽然跟linux下可执行文件的运行结果,在视觉效果上略有差异,但基本上还是大同小异。
总结概要
在完成一个软件或者程序的实现之后,最后的一步就是发布,发布的目的是为了让更多的人来使用这个项目,而大部分的人是没有相应的编程环境的,因此我们必须考虑将代码编译成各个平台的可执行文件,再发布给用户去使用。本文主要介绍通过pyinstaller在linux和windows上分别打包python脚本为可执行文件,想要跨平台的编译软件就目前而言实现起来还比较困难,博主本地使用的是Win11+WSL2 Ubuntu Linux的环境,能够在一定的程度上解决跨平台发布的问题。
将python脚本打包为exe可执行文件相关推荐
- 【Python实用技巧】如何将Python脚本打包成exe可执行文件?
相信大家也有过这样的困惑,本来已经使用Python写好了脚本代码,又不想公开代码逻辑,但又要给别人使用这些功能? 这可怎么办呢? 有没有什么办法,可以将Python脚本打包成一个exe文件,这样发布的 ...
- MLGBD终于搞定了,将python脚本打包成exe可执行文件
1.下载pyinstaller 我是使用git下载的 git clone https://github.com/pyinstaller/pyinstaller 2.下载pywin32相应版本并安装 一 ...
- python脚本打包成exe可执行文件
1. 工具pyinstaller (pip install pyinstaller) 2.生成exe (pyinstaller -F -w Capturing_PDFs.py) 参数 -F 生成单个文 ...
- Tools_将Python脚本封装成exe可执行文件
将Python脚本封装成exe可执行文件 将Python脚本封装成exe可执行文件 cx_freeze是用来将 Python 脚本封装成可执行程序的工具,支持最新的Python3.2版本.生成的执行文 ...
- python程序打包为exe可执行文件
大家都知道,Python是一种脚本语言,也就是解释型的语言,需要解释器来进行解释以后才可以执行,而Python源代码需要在Python虚拟机上面运行,但是我们做好的程序,不可能给用户使用的时候还让他安 ...
- python程序打包成exe可执行文件,亲测可行(pyinstaller教程)
python程序打包成exe可执行文件,亲测可行(pyinstaller教程)(11-20190214) 文章目录: 有些程序你不想让别人看到,由此程序你想做成绿色软件普惠大众,有些..., 然而你只 ...
- windows系统用cx_freeze给python程序打包成exe可执行文件
转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/81740340 本机window ...
- 将python程序打包成exe可执行文件
方法一::打包完成后可以直接被他人使用,他人不用安装python环境的 可以使用pyinstaller模块实现将python项目打包成exe执行文件 """ 先安装模块 ...
- python程序打包成exe可执行文件
1.安装pyinstaller模块: 2.验证安装成功pyinstaler,该步骤只是为了心理安慰: 3.将自己的python文件打包成exe: 输入命令:pyinstaller -F **\ ...
最新文章
- Python 实现链表和二叉树
- mysql 语句优化实例_MySQL 语句优化实例
- java 数组 内存_图解Java数组的内存分配
- 解决 IDEA 在 commit 代码时 git 日志乱码 (提交时填写的中文说明乱码)
- Python Pytest前置setup和后置teardown详解
- python文件处理seek()方法的参数是,在Python中操作文件之seek()方法的使用教程
- 《WinForm开发系列之控件篇》Item25 Lable(暂无)
- Android商城开发系列(六)——使用 OkHttpUtils 请求网络 + 使用 fastjson解析数据...
- JAVA大数据-Week4-DAY3
- PostgreSQL学习手册(函数和操作符三)
- win10多合一原版系统_win10多合一系统制作方法详解
- Tungsten Fabric入门宝典丨TF组件的七种“武器”
- 企业如何搭建商业智能BI,过程中又需要注意哪些事项
- Vue中 $event not defined
- 学校校车运营各项安全管理制度_学校校车安全管理制度.doc
- HMI-64-【多媒体】Ui全部制作完成
- 解决win10一开机内存(8G)就占用70%多,查看任务管理器并没有占用内存很高的进程的问题
- Python wxPython基本教程
- TCP/IP高频考点之一个数据包的流浪日记 - 网络层
- 购袖珍电子计算机笔记本,购买迷你电脑,哪个品牌值得信赖
热门文章
- YAML(YML)——入门
- 什么是编码?什么是解码?为什么要编码.解码?
- 选择尚学堂与传智播客的java培训?
- 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序
- halcon中面到面的距离_halcon学习网
- 网络协议:HTTP的升级改进
- 安卓手机并没有“校准电池”的方式
- 【一看就懂】tf.logical_and(),tf.logical_or(),tf.logical_not(),tf.logical_xor()
- 学习java的第17天
- PLC通讯实现-C#实现AB-CIP以太网通讯