生成可执行文件:无需编程环境
发表时间:2023-09-14 20:31:43
文章来源:炫佑科技
浏览次数:207
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
生成可执行文件:无需编程环境
为什么生成可执行文件:
无需安装相应的编程环境
您可以使您的应用程序闭源
用户可以直接使用,方便快捷
包装工具
一、简介
它是一种由解释器解释并执行的脚本语言。 发布方式:
.py文件:对于开源项目或者源码不是那么重要的地方,直接提供源码生成可执行文件:无需编程环境,需要用户自己安装,安装各种依赖库。 (这是官方各种安装包所做的)
.pyc文件:有些公司或个人出于保密或者各种原因不希望源代码被操作者看到。 他们可以使用 pyc 文件来发布。 pyc文件是可以被解释器识别的二进制代码,因此发布后也是跨平台的。 需要用户安装对应的版本和依赖库。
可执行文件:对于非编码人员或新手用户来说,如果你要求他们安装,同时还扔一堆依赖库,那将是一场灾难。 对于此类用户,*简单的方法是提供一个可执行文件并告诉他们如何使用它。 比较麻烦的是,需要针对不同的平台(Linux、Mac、...)打包不同的可执行文件。
本文主要介绍*后一种方法。 .py和.pyc都比较简单,自己就可以完成。将脚本打包成可执行文件的方法有很多种。 本文重点讨论
2. 原理介绍
事实上,将解析器和自己的脚本打包成可执行文件与编译成真正的机器代码完全不同,所以不要指望打包成可执行文件会提高运行效率。 相反,可能会降低运行效率,优点是不需要在运行人员的机器上安装你的脚本所依赖的库。 在Linux操作系统下,主要使用工具包中的ldd和命令。
输入你指定的脚本,首先分析该脚本所依赖的其他脚本,然后搜索、复制、收集所有相关的脚本,包括解析器,然后将这些文件放在一个目录中或者打包成文件内部的可执行文件。
您可以直接发布整个输出文件夹中的文件,或者生成的可执行文件。 你只需要告诉用户你的应用程序是独立的,不需要安装其他包或者某个版本就可以直接运行。
需要注意的是,打包后的可执行文件只能在与打包机系统相同的环境下使用。 换句话说,它不可移植,如果需要在不同的系统上运行,则必须针对该平台进行打包。
3. 安装
如果网络稳定python制作小程序,通常可以使用以下命令直接安装:
pip install pyinstaller
当然,你也可以下载源码包,然后进入包目录,执行以下命令,也可以安装(前提是需要安装):
python setup.py install
生成exe文件后,exe文件无法正常运行。 您可以尝试以下安装
pip3 install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz
检查是否安装成功:
只需执行以下命令之一:
pyinstaller --version
pyinstaller -v
如果出现如下界面则说明安装成功。
参数功能
-F 表示生成单个可执行文件
-D – 创建一个包含 exe 文件但依赖于许多文件的目录(默认选项)
-w 表示删除控制台窗口,这在GUI界面中非常有用。但如果是命令行程序,则删除此选项。
-c –, – 使用控制台,无界面(默认)
-p表示自定义需要加载的类路径,一般不用。
-i 代表可执行文件的图标
其他参数可以通过--help查看
4.开始打包
进入待打包脚本所在目录,然后执行以下命令:
pyinstaller -F test.py
用ICO图标制作
如果需要使用ICO图标,可以在网上搜索“ICO在线生成”。 您可以直接点击ICO图标制作制作,然后以.ico为栏目保存。
pyinstaller -F -i ico_name.ico test.py
如何进入dos窗口
项目应用程序打包成exe。 运行exe文件时,会弹出dos命令窗口。 在此窗口中,您可以看到一些打印信息。 如果只想运行页面并去掉dos窗口,则需要在打包时添加-w参数。
pyinstaller -F test.py -w
生成exe文件后打开速度慢
1.使用-D参数代替
pyinstaller -D test.py -w
2.使用Box将文件夹压缩成exe文件
执行流程如下图所示:
5. 打包结果
打包完成后,进入当前目录,你会发现四个文件夹或文件:、build、dist、nhdz.spec。 打包后的exe应用程序位于dist目录下。 输入之后就可以看到了。 可以把它复制到其他地方直接使用,如下图,就是打包完成后的目录:
6. 执行exe应用程序
因为它是一个exe应用程序和可执行文件,所以你只需双击它即可运行它。 运行效果如下图所示:
至此,exe文件已经打包完毕,可以运行了。 如果想在其他平台运行,只需要复制dist下的文件即可。
*后,如果大家有什么问题或者想法,可以直接与我交流,谢谢!