前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python如何生成可执行的.exe文件

Python如何生成可执行的.exe文件

作者头像
全栈程序员站长
发布2022-09-01 15:00:06
4K0
发布2022-09-01 15:00:06
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

为什么要生成可执行文件: 不需要安装对应的编程环境 可以将你的应用闭源 用户可以方便、快捷的直接使用 打包工具 pyinstaller

一.pyinstaller简介 Python是一个脚本语言,被解释器解释执行。它的发布方式:

.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)

.pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。

可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,…)。

本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller

二、PyInstaller的原理简介 PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操作系统下,它主要用的binutil工具包里面的ldd和objdump命令。

PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其他脚本,然后去查找,复制,把所有相关的脚本收集起来,包括Python解析器,然后把这些文件放在一个目录下,或者打包进一个可执行文件里面。

可以直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。你只需要告诉用户,你的应用App是自我包含的,不需要安装其他包,或某个版本的Python,就可以直接运行了。

需要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。

三、安装pyinstaller 如果网络稳定,通常直接使用下面的命令安装即可:

代码语言:javascript
复制
pip install pyinstaller

当然了,也可以下载pyinstaller源码包,然后进入包目录执行下面的命令,同样可以安装(前提是需要安装setuptools):

代码语言:javascript
复制
python setup.py install

在生成exe文件后,无法正常运行exe文件,可以尝试下面这种安装

代码语言:javascript
复制
pip3 install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz

检查pyinstaller安装成功与否: 只需要执行如下命令其中一个即可:

代码语言:javascript
复制
pyinstaller --version
pyinstaller -v

如果出现如下界面,就说明是安装成功了

在这里插入图片描述
在这里插入图片描述

pyinstaller参数作用 -F 表示生成单个可执行文件 -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项) -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧 -c –console, –nowindowed 使用控制台,无界面(默认) -p 表示你自己自定义需要加载的类路径,一般情况下用不到 -i 表示可执行文件的图标 其他参数,可以通过pyinstaller –help查看 四、开始打包 进入python需要打包的脚本所在目录,然后执行下面的命令即可:

代码语言:javascript
复制
pyinstaller -F test.py

带ICO图标制作 需要用到ICO图标,大家可以网上搜索“ICO 在线生成”,可以直接点击ICO图标制作在上面制作、然后保存以ico_name.ico为列

代码语言:javascript
复制
pyinstaller -F -i ico_name.ico test.py

去dos窗口方法 tkinter 工程 运用 pyinstaller 打包成exe,运行exe文件的时候,会弹出一个dos命令窗口,这个窗口可以看到一些打印信息,如果想只运行tkinter 页面,去掉dos窗口需要在打包的时候 加上 -w 参数

代码语言:javascript
复制
pyinstaller -F test.py -w

生成exe文件后,打开速度慢问题 1.改用-D参数

代码语言:javascript
复制
pyinstaller -D test.py -w

2.使用 Enigma Virtual Box 将文件夹压缩成一个exe文件

执行过程如下图所示:

在这里插入图片描述
在这里插入图片描述

五、打包结果 打包完成后,进入到当前目录下,会发现多了__pycache__、build、dist、nhdz.spec这四个文件夹或者文件,其中打包好的exe应用在dist目录下面,进入即可看到,可以把他拷贝到其他地方直接使用,如下图所示,是打包完成后的目录:

在这里插入图片描述
在这里插入图片描述

六、执行exe应用 因为是exe应用,是可执行文件了,所以直接双击运行即可,运行效果如下图所示:

在这里插入图片描述
在这里插入图片描述

到这里,exe文件就已经生算是打包完成,并且可以运行了,如果你想在其他平台运行,只需要拷贝dist下面的文件即可

最后,大家有什么疑问或者想法,都可以直接和我交流,谢谢!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141663.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档