将Python脚本打包成可执行文件

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

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

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

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

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

Freezing Your Code

各种打包工具的对比如下(来自文章Freezing Your Code):

SolutionWindowsLinuxOS XPython 3LicenseOne-file modeZipfile importEggspkg_resources support
bbFreezeyesyesyesnoMITnoyesyesyes
py2exeyesnonoyesMITyesyesnono
pyInstalleryesyesyesnoGPLyesnoyesno
cx_FreezeyesyesyesyesPSFnoyesyesno
py2appnonoyesyesMITnoyesyesyes

PS.其中pyInstaller和cx_Freeze都是不错的,stackoverflow上也有人建议用cx_Freeze,说是更便捷些。pkg_resources新版的pyInstaller貌似是支持的。

安装PyInstaller

对于那些网络比较稳定,能够流畅使用pip源地址的用户,直接下面的命令就可以搞定:

pip install pyinstaller

通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):

python setup.py install

安装完后,检查安装成功与否:

pyinstaller --version

安装成功后,就可以使用下面的命令了:

  • pyinstaller : 打包可执行文件的主要命令,详细用法下面会介绍。
  • pyi-archive_viewer : 查看可执行包里面的文件列表。
  • pyi-bindepend : 查看可执行文件依赖的动态库(.so或.dll文件)
  • pyi-... : 等等。

使用PyInstaller

pyinstaller的语法:

pyinstaller [options] script [script ...] | specfile

最简单的用法,在和myscript.py同目录下执行命令:

pyinstaller mycript.py

然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:

pyinstaller -F mycript.py

你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。

当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug,了解pyInstaller执行的过程;还有一些针对不同平台的选项,具体用法可以访问PyInstaller官方WIKI。

在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件。可以使用:

pyi-makespec options script [script ...]

创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:

pyinstaller specfile
pyi-build specfile

PyInstaller的原理简介

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

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

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

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

参考资料

  1. Freezing Your Code
  2. PyInstaller官方WIKI
  3. PyInstaller源码

转载于:https://www.cnblogs.com/smiler/p/9713055.html

python文件转为可执行文件(.exe)的详细步骤 本文详细介绍了如何从零开始把python文件打包成为可执行文件(.exe)。 阅读详情

相关推荐

Windows平台使用PyInstaller将Python脚本打包成可执行文件

本文介绍一种方法,通过PyInstaller工具将Python脚本打包成一个可执行文件,可以直接在Windows运行,不管Windows是否安装Python都可以运行该可执行文件。

LEo的网络日志 3339

python代码打包成可执行文件(exe)

在介绍pyinstaller之前,先简单介绍下其它几个可以用于打包python代码的工具:cx_Freeze:可以将Python脚本转换为独立的可执行文件,支持多个平台。PyInstaller:可以将Python脚本(或模块)转换为单个可执行文件或目录,支持多个平台。PyOxidizer:功能类似于PyInstaller,但它可以生成自包含的二进制文件,可以跨平台使用。Py2exe:仅适用于Windows平台,可以将Python脚本转换为.exe可执行文件。

2301_76161259的博客 3万+

将python脚本打包成exe可执行文件

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

Junior_Q的博客 720

python工程打包成可执行文件

python打包成可执行的exe文件

wangmengmeng99的博客 2万+

【Pyinstaller】将写好的python脚本打包成可以在win下直接运行的exe可执行文件

PyInstaller 是一个用于将 Python 应用程序打包成独立可执行文件的工具。它的主要作用是将 Python 脚本、模块和相关的资源文件打包成一个可执行的应用程序,使得用户可以在没有安装 Python 解释器的环境中运行这个应用程序,从而解决了 Python 应用程序分发时的依赖性和兼容性问题。打包成独立可执行文件。

真的好想再回到那时,可现在能做的只有补救。————个人博客:https://w7h1te.github.io/ 1236

【RL in VLA】VLA中的强化学习

本文提出了一种名为 Reinforcement Learning Distilled Generalist(RLDG) 的方法,通过强化学习生成高质量训练数据来微调机器人基础模型。通过在多个精确操作任务上的实验,我们证明了 RLDG 在成功率和泛化能力上显著优于使用人类演示的传统微调方法。RLDG 不仅减少了对人类演示数据的依赖,还展示了在复杂多阶段任务中的灵活性和有效性。

三木今天学习了嘛の博客 2257

将 Python 脚本打包成可执行文件

Python是一个脚本语言,被解释器解释执行。它的发布方式: .py 文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的) .pyc 文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用 pyc 文件发布,pyc 文件是 Python 解释器可以识别的二进制码...

AI悦创·编程私教1v1 458

基于SSM的足浴管理系统(源码+开题)

研究内容: 本研究的内容主要包括以下几个方面:首先,我们需要对现有的足浴管理系统进行深入的研究和分析,了解其优缺点;最后,我们需要对新设计的系统进行评估和优化,以满足用户的需求和提升系统的使用体验。因此,开发一种基于SSM的足浴管理系统,能够有效地解决这些问题,提高足浴服务的质量和效率。研究目的: 本研究的主要目的是设计和实现一个功能完善、操作简便、用户体验良好的基于SSM的足浴管理系统。通过对系统的研究和设计,我们希望能够为足浴服务行业提供一个高效、便捷的工具,从而推动足浴服务行业的发展。

林科程序设计 1681

如何将Python脚本打包成可执行文件

Python是一个脚本语言,被解释器解释执行。它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的) .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。 可执行文件:对于非码农用户或者一些小白用户,你让

码农黑羽的博客 568

DeepSeek-V4-Pro 正式版突袭上线:Agent 能力暴涨,DeepSWE 直接干翻 Claude Opus 4.8

8 月 12 日深夜,DeepSeek 悄悄在 API 文档里上架了一个新版本号——DeepSeek-V4-Pro-0813。第二天(13 日),这个版本被确认为 V4 Pro 正式版。没有发布会,没有预热,只改了版本号,就把整个 AI 圈的注意力又抢了过去。

2601_96613114的博客 837

逆向工程的艺术:如何绕过PDD的长连接机制实现高效抓包

本文深入解析了如何通过逆向工程技术绕过拼多多(PDD)的长连接机制实现高效抓包。详细介绍了动态调试方案、关键函数Hook技巧及流量解密重组方法,帮助开发者在非Root环境下捕获并解析PDD的加密数据。结合Python工具链,实现稳定数据采集,适用于电商数据分析和反爬策略研究。

weixin_29058331的博客 674

使用PyInstaller将Python脚本打包成可执行文件

在Python开发过程中,有时我们需要将自己写的脚本打包成可执行文件,以便在没有安装Python环境的计算机上运行。PyInstaller是一个常用的Python工具,它可以将Python程序及其依赖项打包成独立的可执行文件,支持Windows、Linux和macOS平台。

m0_51261262的博客 706

WSL2下用QEMU模拟ARM开发板:从编译uboot到调试全流程(附常见错误解决)

本文详细介绍了在WSL2环境下使用QEMU模拟ARM开发板的完整流程,包括uboot编译、内核调试等关键步骤。通过QEMU模拟vexpress-a9开发板,开发者可以高效搭建嵌入式开发环境,解决常见错误并提升开发效率。

solidity8miner的博客 285

python脚本打包为二进制脚本_如何将Python脚本打包成可执行文件?(详细)

本篇文章给大家带来的内容是关于如何将Python脚本打包成可执行文件?(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Python是一个脚本语言,被解释器解释执行。它的发布方式:.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的).pyc文件:有些公司或个人因为机密或者各...

weixin_39733812的博客 970

自定义模型训练——打造专属OpenClaw模型(2026AI版)

本文介绍了OpenClaw自定义模型训练的核心流程,包括框架选择(PyTorch、TensorFlow、HuggingFace和原生OpenClaw框架)、训练环境搭建脚本、以及数据收集系统的设计。数据收集器支持从数据库、API、文件和网络等多种来源获取训练数据,并提供灵活的过滤机制确保数据质量。通过这套系统,开发者可以高效准备训练数据,为后续模型训练打下坚实基础。

博客 874

47、利用组策略配置 Windows 防火墙与 IPsec 全解析

本文深入解析了如何利用组策略配置Windows防火墙与IPsec,涵盖防火墙规则基础、IPsec身份验证与加密机制、服务器和域隔离实现方法、WFAS中新旧IPsec规则的区别与配置流程,并详细说明了防火墙属性与规则的优先级计算方式。同时介绍了证书服务、EFS等未详述的安全功能及相关学习资源,帮助管理员通过组策略有效提升网络安全性。

onion的博客 100

Python脚本打包成可执行文件

将Python脚本转换为可执行文件,可以避免依赖Python运行环境、便于脚本运行,而且可以闭源代码 文章目录 使用工具:PyInstaller 打包原理:把Python解释器和脚本以及依赖包全部打包成一个可执行的文件,因此打包后的可执行文件通常体积较大,脚本中import <packet>改成from <packet> import <module>会优化生成文件体积。 ...

Captain_RB的博客 2649

CADENCE 25.1打开元件库ERRORCannot perform the operation because of an exception.

摘要:解决CADENCE25.1打开元件库报错"ERRORCannotperformtheoperationbecauseofanexception"的方法:该错误通常由软件中文设置导致。解决方案为:进入Options→Preferences→MorePreferences,取消勾选两个本地语言选项后重启软件即可恢复正常。此方法简单有效,能快速解决因语言设置导致的元件库访问异常问题。(98字)

0 1007

PyInstaller将多个Python脚本打包成一个可执行文件

使用 PyInstaller 将多个 Python 脚本打包成一个可执行文件时,首先需要指定主脚本作为程序入口点。PyInstaller 会自动分析并打包所有依赖的脚本和模块。对于复杂项目,可能需要手动处理动态导入的模块或添加非 Python 文件,可以通过 --hidden-import 和 --add-data 参数实现。此外,使用 .spec 文件可以更精细地控制打包过程。常见问题如模块未找到错误,可以通过手动添加依赖解决。优化打包结果的方法包括使用 UPX 压缩和创建干净的虚拟环境。通过这些步骤,可

servepeople的博客 1227

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python 脚本打包成可执行文件: pyinstaller

format。

图片显示不出来,请去我的博客园:https://www.cnblogs.com/gosoline 835

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python可以打包成可执行文件吗_Python脚本文件打包成可执行文件的方法

将Python脚本文件包装成可执行文件,其目的有二:一则: 不需要依赖Python编译器就可以运行软件二则: 不想让自己的源码公布出去常用的工具有: py2exe、cx_freeze等【工具:py2exe】安装py2exe安装该工具很简单:只需要从官方网站:http://www.py2exe.org/下载与版本对应的安装程序,点击下一步即可完成安装。安装后,执行import py2exe,不报错则...

weixin_39963534的博客 263

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python脚本打包成可执行文件_Python脚本文件打包成可执行文件的方法_python打包可执行文件...

这篇文章主要介绍了Python脚本文件打包成可执行文件的方法,本主要讲解了Python2.X版本的打包方法,对Python3.X的打包也有简单介绍,需要的朋友可以参考下将Python脚本文件包装成可执行文件,其目的有二:一则: 不需要依赖Python编译器就可以运行软件二则: 不想让自己的源码公布出去常用的工具有: py2exe、cx_freeze等【工具:py2exe】安装py2exe安装该工具...

weixin_39935257的博客 305
上一篇: WPF TreeView SelectedItemChanged called twice
下一篇: Python GUI
dddp75921
博客等级 码龄12年 9粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值