将python程序变成可执行程序

这篇具有很好参考价值的文章主要介绍了将python程序变成可执行程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

第一章 将python程序变成可执行程序 | 基础篇
第二章 将python程序变成可执行程序 | 进阶篇



前言

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


一、Pyinstall是什么?

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

二、使用步骤

1.ubuntu环境下使用

(1)安装

  • 新建一个conda环境,名为pyinstall。这样做也是为了方便与其他环境隔离
conda create -n pyinstall python=3.8
  • 激活环境
source activate pyinstall
  • 安装pyinstaller包
python -m pip install pyinstaller

(2)打包程序

  • 在终端下新建一个文件,并把打印hello world写入到这个文件中
touch demo.py && echo "print(\"hello world\")" >> demo.py
  • 输入下面代码,将其打包成linux可执行程序
pyinstaller --onefile --noconsole demo.py

会在demo.py的同级目录下生成各种文件
将python程序变成可执行程序

(3)使用

  • 最终会在dist下生成可执行文件,进入到这个目录,运行可执行文件即可
./demo

可以看到将hello world打印出来
将python程序变成可执行程序

2.在windows环境下使用

(1)安装

  • 在菜单栏里找到Anacodna3,点击打开终端Anaconda Prompt
    将python程序变成可执行程序

  • 先输入下面命令,退出当前base环境。

conda deactivate

将python程序变成可执行程序

  • 创建一个新的打包的环境,此处名为pyinstall
conda create -n pyinstaller python=3.8

将python程序变成可执行程序

  • 安装pyinstaller
python -m pip install pyinstaller

将python程序变成可执行程序

(2)打包程序

  • 在文件夹中新建一个demo.py。把下面示例代码填写进去。实现功能很简单在命令控制台打印“hello world”。后面增加了一句input('Press Enter to exit...'),其原因是如果没有,程序在执行完hello world后会自动关闭控制台窗口。
# 打印hello world
print("hello world")
input('Press Enter to exit...')

将python程序变成可执行程序

  • Anaconda Prompt中的代码目录下输出如下命令,即可在dist下生成exe文件。
pyinstaller --onefile --console demo.py

将python程序变成可执行程序

(3)使用

  • 双击demo.exe就会打开命令控制台看到打印信息,回车会关闭窗口
    将python程序变成可执行程序

三、其他

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 <SRC;DEST 或 SRC:DEST>
需要添加到可执行文件中的额外非二进制文件或文件夹。路径分隔符是平台特定的,os.pathsep(在Windows上是;,在大多数Unix系统上是:)被使用。此选项可以多次使用。
–add-binary <SRC;DEST 或 SRC:DEST>
需要添加到可执行文件中的额外二进制文件。有关更多详细信息,请参见 --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 <FILE.ico或FILE.exe,ID或FILE.icns或Image或“NONE”>,–icon <FILE.ico或FILE.exe,ID或FILE.icns或Image或“NONE”>
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 <FILE 或 XML>, --manifest <FILE 或 XML>
将 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://www.toymoban.com/news/detail-458023.html

到了这里,关于将python程序变成可执行程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AIGC系列文章目录 第三章 AIGC 简单易用免费的AI图像生成器: Stable Diffusion

    目前亲测体验的AI图像生成器有NovelAI、MJ和Stable Diffusion。其中, 支持免费、无限生成、超高专业级画质 的只有 Stable Diffusion 。 Stable Diffusion 由 Stable Diffusion XL 提供支持,是一款最先进的工具,可以将您的想象力变为现实。 只需点击几下和简单的文本输入,您就可以创建令人

    2024年02月03日
    浏览(68)
  • C#程序变量统一管理例子 - 开源研究系列文章

             今天讲讲关于C#应用程序中使用到的变量的统一管理的代码例子。          我们知道,在C#里使用变量,除了private私有变量外,程序中使用到的公共变量就需要进行统一的存放和管理。这里笔者使用到的公共变量管理库划分为:1)窗体;2)路径;3)对象;所以笔

    2024年02月11日
    浏览(43)
  • 【易售小程序项目】项目介绍与系列文章集合

    易售二手小程序主要用于校园中二手商品的交易,该系列文章会记录这个小程序前端的整个开发过程并提供详细代码,后台主要基于若依管理系统搭建,文章中也会提及后端关键部分的实现及代码。希望该系列文章可以帮助小白了解项目的开发流程和一个产品的迭代过程,如

    2024年02月10日
    浏览(45)
  • DevOps系列文章 之 Python基础

    1.定义 1、集合是一个无序的,不重复的数据组合,它的主要作用如下: 1.去重,把一个列表变成集合,就自动去重了 2.关系测试,测试两组数据之前的交集、差集、并集等关系 2、集合类型 1.数学上,把set称做由不同的元素组成的集合,集合(set)的成员通常被称做集合元素

    2024年02月11日
    浏览(39)
  • DevOps系列文章 之 Python 基础

    考点:字符串:str( )、整型数:int( )、浮点数:float( ) 考点:条件分支 考点:引入随机数 考点:while循环语句 考点:for循环语句 Python语言支持以下类型的运算符 以下假设变量a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个

    2024年02月11日
    浏览(43)
  • 6种打包Python代码的方法,让你的程序变成exe应用!

    Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。 然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。 因此,将Python代码打包成可执行文件(exe)是一种很好的解决方案。 本文将介绍6种将Python代码打包

    2024年02月16日
    浏览(59)
  • 6种打包Python代码的方法,让你的程序变成exe应用

    Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。 然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。 因此,将Python代码打包成可执行文件(exe)是一种很好的解决方案。 本文将介绍6种将Python代码打包

    2024年01月18日
    浏览(50)
  • IDEA项目目录或类名变成红色的原因及解决办法

    在修改部分了部分代码想上传时,发现有的类名/方法名报红,但是能够编译。 类名变为红色是因为你安装了版本控制工具(例如Git,SVN等),更新了代码,没有提交上去,起提示作用,不影响实际功能。 方法一: 点击 idae 的 File Invalideate Caches / Restart 清除缓存并重启接下来

    2024年02月11日
    浏览(52)
  • 织梦模板正则批量替换文章内容内链变成绝对路径的方法

    织梦文章内链绝对路径的跳过,相对路径的替换 替换之前 替换之后 内容模板文章内容标签 改成 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持yii666。

    2024年02月02日
    浏览(38)
  • DevOps系列文章之 java调用python脚本

    在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐) 调用python脚本中的函数 官网地址 首页 | (jython.org) Jython项目提供了Java中的Python实现, 为Python提供了在JVM上运行的好处,并可以访问用Java编写的类。 当前版本(Jyt

    2024年02月14日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包