文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

将python程序变成可执行程序

2023-10-04 12:57

关注

文章目录


前言

在日常开发的过程,可能会用python写一些小工具,给其他非开发人员使用。为了让更多不懂编程的人使用方便,往往都会直接打包成可执行程序。以下介绍两种平台的程序打包方法,分别为linux下和windows下。打包工具我们采用的是pyinstall


一、Pyinstall是什么?

PyInstaller是一个Python打包工具,它可以将Python代码打包成可执行文件,同时可以在不同的操作系统上进行分发。使用PyInstaller可以避免Python程序的依赖关系问题,这使得Python程序的分发更加方便和可靠。PyInstaller支持多种操作系统,包括Windows、Linux和MacOS等。

二、使用步骤

1.ubuntu环境下使用

(1)安装

conda create -n pyinstall python=3.8
source activate pyinstall
python -m pip install pyinstaller

(2)打包程序

touch demo.py && echo "print(\"hello world\")" >> demo.py
pyinstaller --onefile --noconsole demo.py

会在demo.py的同级目录下生成各种文件
在这里插入图片描述

(3)使用

./demo

可以看到将hello world打印出来
在这里插入图片描述

2.在windows环境下使用

(1)安装

conda deactivate

在这里插入图片描述

conda create -n pyinstaller python=3.8

在这里插入图片描述

python -m pip install pyinstaller

在这里插入图片描述

(2)打包程序

# 打印hello worldprint("hello world")input('Press Enter to exit...')

在这里插入图片描述

pyinstaller --onefile --console demo.py

在这里插入图片描述

(3)使用

三、其他

Pyinstaller包的其他功能,读者可以自行在安装包后输入命令寻求说明帮助

pyinstaller -h

下面罗列部分参数的说明

位置参数:
scriptname 要处理的脚本文件的名称,或者恰好一个 .spec 文件。如果指定了 .spec 文件,则大多数选项都是不必要的,并且将被忽略。

可选参数:
-h, --help 显示帮助信息并退出
-v, --version 显示程序版本信息并退出。
–distpath DIR 存放打包应用的路径(默认为./dist)
–workpath WORKPATH 存放所有临时工作文件,.log,.pyz等的路径(默认为./build)
-y, --noconfirm 在不要求确认的情况下替换输出目录(默认为SPECPATH/dist/SPECNAME)
–upx-dir UPX_DIR UPX工具的路径(默认在执行路径中搜索)
-a, --ascii 不包含Unicode编码支持(默认情况下如果可用则包括)
–clean 在构建之前清除PyInstaller缓存并删除临时文件。
–log-level LEVEL 在构建时控制台消息的详细程度。LEVEL可以是TRACE、DEBUG、INFO、WARN、DEPRECATION、ERROR、FATAL之一(默认为INFO)。也可以通过设置PYI_LOG_LEVEL环境变量来覆盖它。

要生成的内容:
-D, --onedir 创建一个包含可执行文件的单个文件夹捆绑包(默认)
-F, --onefile 创建一个单个文件的捆绑可执行文件。
–specpath DIR 存储生成的spec文件的文件夹(默认为当前目录)
-n NAME, --name NAME 分配给打包应用和spec文件的名称(默认为第一个脚本的基本名称)

打包内容,搜索路径:
–add-data
需要添加到可执行文件中的额外非二进制文件或文件夹。路径分隔符是平台特定的,os.pathsep(在Windows上是;,在大多数Unix系统上是:)被使用。此选项可以多次使用。
–add-binary
需要添加到可执行文件中的额外二进制文件。有关更多详细信息,请参见 --add-data 选项。此选项可以多次使用。
-p DIR, --paths DIR 用于搜索导入的路径(类似于使用PYTHONPATH)。可以使用多个路径,用“:”分隔,或多次使用此选项。相当于在spec文件中提供 pathex 参数。
–hidden-import MODULENAME, --hiddenimport MODULENAME
命名在脚本代码中不可见的导入。此选项可以多次使用。
–collect-submodules MODULENAME
从指定的包或模块中收集所有子模块。此选项可以多次使用。
–collect-data MODULENAME, --collect-datas MODULENAME
从指定的包或模块中收集所有数据。此选项可以多次使用。
–collect-binaries MODULENAME
从指定的包或模块中收集所有二进制文件。此选项可以多次使用。
–collect-all MODULENAME
从指定的包或模块中收集所有子模块,数据文件和二进制文件。此选项可以多次使用。
–copy-metadata PACKAGENAME
复制指定包的元数据。此选项可以多次使用。
–recursive-copy-metadata PACKAGENAME
复制指定包及其所有依赖项的元数据。此选项可以多次使用。
–additional-hooks-dir HOOKSPATH
用于搜索钩子的额外路径。此选项可以多次使用。
–runtime-hook RUNTIME_HOOKS
自定义运行时钩子文件的路径。运行时钩子是与可执行文件捆绑的代码,在任何其他代码或模块之前执行,以设置运行时环境的特殊功能。此选项可以多次使用。
–exclude-module EXCLUDES
可选的模块或包(Python名称,而不是路径名称),将被忽略(就像未找到一样)。此选项可以多次使用。
–splash IMAGE_FILE (实验性的)在应用程序中添加一个带有IMAGE_FILE图像的启动画面。启动画面可以在解压缩过程中显示进度更新。

如何生成:
-d 或 --debug 选项可以提供调试冻结应用程序的帮助。可以多次使用该选项选择以下几个选项之一:
all:所有以下选项。
-imports:指定-v选项到底层的Python解释器,导致每次初始化模块时打印一条消息,显示从哪个地方(文件名或内置模块)加载。请参见https://docs.python.org/3/using/cmdline.html#id4。
-bootloader:告诉引导加载程序在初始化和启动捆绑应用程序时发出进度消息。用于诊断缺少导入的问题。
-noarchive:将所有冻结的Python源文件存储为存档文件而不是存储在结果输出目录中的文件。
–python-option PYTHON_OPTION 选项可以指定在运行时传递给Python解释器的命令行选项。目前支持“v”(相当于“–debug imports”),“u”和“W ”。
-s 或 --strip 选项可以对可执行文件和共享库应用符号表剥离操作(不推荐在Windows上使用)。
–noupx 选项可以禁用 UPX,即使它可用(在Windows和Unix系统之间的工作方式不同)。
–upx-exclude FILE 选项可以在使用 upx 时防止二进制文件被压缩。如果 upx 在压缩期间破坏某些二进制文件,则通常使用此选项。FILE 是二进制文件的文件名,不包括路径。可以多次使用此选项。

Windows和Mac OS X特定选项:
-c,–console,–nowindowed
打开标准I/O的控制台窗口(默认)。在Windows上,如果第一个脚本是’.pyw’文件,则此选项无效。
-w,–windowed,–noconsole
Windows和Mac OS X:不为标准I/O提供控制台窗口。在Mac OS上,这也会触发构建Mac OS .app捆绑包。在Windows上,如果第一个脚本是’.pyw’文件,则此选项会自动设置。此选项在*NIX系统上被忽略。
-i ,–icon
FILE.ico:将图标应用于Windows可执行文件。FILE.exe,ID:从exe中提取具有ID的图标。FILE.icns:将图标应用于Mac OS上的.app捆绑包。如果输入的图像文件不是平台格式(Windows上的ico,Mac上的icns),PyInstaller将尝试使用Pillow将图标转换为正确的格式(如果安装了Pillow)。使用“NONE”不应用任何图标,从而使操作系统显示一些默认设置(默认值:应用PyInstaller的图标)。此选项可以多次使用。
–disable-windowed-traceback
在窗口(noconsole)模式下禁用未处理异常的回溯转储(仅适用于Windows和macOS),并显示一条消息指出此功能已被禁用。

Windows 特定选项:
–version-file FILE 从 FILE 中添加版本资源到可执行文件中。
-m , --manifest
将 MANIFEST 文件或 XML 添加到可执行文件中。
–no-embed-manifest 生成一个外部的 .exe.manifest 文件而不是将 MANIFEST 嵌入到可执行文件中。仅适用于 onedir 模式;在 onefile 模式下,不论此选项如何,MANIFEST 都始终被嵌入。
-r RESOURCE, --resource RESOURCE
将资源添加或更新到 Windows 可执行文件中。RESOURCE 是一个到四个条目,格式为 FILE[,TYPE[,NAME[,LANGUAGE]]]。FILE 可以是数据文件或 exe/dll。对于数据文件,至少必须指定 TYPE 和 NAME。LANGUAGE 默认为 0 或可以指定为通配符 * 以更新给定类型和名称的所有资源。对于 exe/dll 文件,如果省略或将 TYPE、NAME 和 LANGUAGE 指定为通配符 *,则将从 FILE 添加/更新所有资源到最终可执行文件中。此选项可以多次使用。
–uac-admin 使用此选项将创建一个请求启动时提升权限的 MANIFEST。
–uac-uiaccess 使用此选项允许升级的应用程序在远程桌面上使用。

总结

本文仅仅简单介绍了pyinstaller在ubuntu和windows下打包python程序为可执行程序的方法,不过并未介绍在ubuntu开发环境下实现打包win10可执行文件exe的方法,如果要这么做,需要进行交叉编译,即在 Ubuntu 中生成适用于 Windows 的二进制文件。为此,你需要安装交叉编译工具链和适用于 Windows 的 Python。需要通过安装wine来安装适用于windows版本的python,需要修改“demo.spec”文件,使他包含适用于Windows的选项。这些步骤把问题复杂化了,远不如直接在对应平台上进行打包操作

来源地址:https://blog.csdn.net/PellyKoo/article/details/129375361

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯