Python脚本打包实战:PyInstaller原理、配置与疑难排查指南
1. 项目概述从脚本到软件的蜕变之路手里写了个挺有用的Python脚本想分享给朋友或者同事用结果对方电脑上没装Python或者版本不对环境依赖一堆报错是不是瞬间感觉自己的劳动成果打了折扣这几乎是每个Python开发者都会遇到的经典场景。我们写的.py文件本质上只是一个文本指令集它的运行严重依赖一个完整的Python解释器环境。对于终端用户尤其是非技术背景的朋友来说让他们去配环境、装库门槛实在太高了。所以“将一个py文件变成一个软件”这个需求核心就是打包与分发。它的目标是把你的脚本、它依赖的所有第三方库、甚至是一个精简版的Python运行时环境统统打包成一个或几个独立的可执行文件。用户拿到这个文件就像拿到一个普通的.exe或.app一样双击就能运行完全不用关心背后是Python还是什么别的语言。这个过程我们通常称之为“打包”Packaging或“冻结”Freezing。这不仅仅是方便了用户对于开发者自己来说也意义重大。它意味着你的项目可以真正地“交付”了。无论是做一个数据分析工具给业务部门开发一个小工具自用还是构建一个需要分发给客户的原型打包成独立软件都是最终落地的关键一步。市面上主流的打包工具如PyInstaller、cx_Freeze、Py2exe等就是为解决这个问题而生的。它们的工作原理各有侧重但核心思想类似分析你的脚本入口收集所有依赖将它们和必要的Python解释器一起封装进一个可执行文件中。接下来我会以一个最常用、跨平台支持最好的工具——PyInstaller为例带你完整走一遍从脚本到软件的实战流程。我会重点拆解其中的原理、关键步骤、那些官方文档可能不会细说的坑以及如何让你的“软件”看起来更专业。2. 核心工具选型与原理剖析为什么是PyInstaller在众多打包工具中它几乎是目前社区的首选。它的优势非常明显简单、跨平台Windows, macOS, Linux、支持单文件打包。你不需要写复杂的配置文件通常一行命令就能搞定基础打包。但要想用好它避免打包后出现各种“灵异事件”理解其底层原理至关重要。2.1 PyInstaller 的工作机制PyInstaller 的打包过程可以粗略分为三个分析阶段理解这个过程能帮你更好地应对打包失败。第一阶段依赖分析。当你运行pyinstaller your_script.py时PyInstaller 首先会启动一个子进程来执行你的脚本。但它并不是真的去运行你的业务逻辑而是通过导入钩子import hooks和字节码分析来静态地追踪你的脚本在执行过程中所有import的模块。这里就出现了第一个常见误区动态导入。如果你的模块是通过__import__()、importlib.import_module()或者在if/else分支、函数内部才导入的PyInstaller 在静态分析阶段很可能发现不了它们导致打包后的程序运行时找不到模块而崩溃。第二阶段收集与打包。分析完依赖后PyInstaller 会创建一个临时目录通常叫build把所有识别到的依赖模块包括纯Python的.py文件和已编译的.pyc文件、你的脚本、以及一个精简版的 Python 解释器在Windows上是python.dll等全部收集到这里。它还会处理数据文件如图片、配置文件、动态链接库.dll,.so,.dylib等。这个阶段工具会根据你的操作系统准备相应的可执行文件骨架。第三阶段生成可执行文件。这是最后一步PyInstaller 将build目录下的所有资源压缩或直接复制到最终输出目录dist中。如果你选择了生成单文件--onefile它会将所有这些东西压缩进一个可执行文件并在程序启动时解压到一个临时目录运行。如果选择单目录默认那么dist目录下会有一个可执行文件和一个包含所有依赖的文件夹。注意--onefile模式虽然分发方便但启动速度会慢一些因为每次启动都要先解压。对于大型项目或启动频繁的工具建议使用单目录模式。此外某些杀毒软件可能会误报单文件打包的程序因为其行为解压到临时目录执行与一些病毒类似。2.2 其他工具横向对比虽然我们以 PyInstaller 为主但了解其他工具能让你在特定场景下做出更优选择。cx_Freeze另一个跨平台工具。它需要你编写一个setup.py脚本进行配置比 PyInstaller 的一行命令稍显复杂但配置更灵活对复杂项目的支持有时更稳定。如果你的项目结构非常复杂或者 PyInstaller 总是打包失败可以尝试 cx_Freeze。Py2exe / Py2app这两个是平台特定工具。Py2exe 只支持 WindowsPy2app 只支持 macOS。它们曾经是各自平台上的标准选择但现在其活跃度和易用性已被 PyInstaller 超越。除非有非常特殊的历史遗留原因否则不建议新项目使用。Nuitka这是一个“另类”的选择。它并非简单的打包工具而是一个将 Python 代码编译成 C 代码再编译成机器码的编译器。理论上它能带来更好的启动速度和运行时性能并且能提供一定的代码混淆保护。但它的编译过程更复杂兼容性问题也更多通常用于对性能或代码保护有极端要求的场景不适合作为通用打包的首选。对于绝大多数应用场景PyInstaller 在易用性、兼容性和社区支持上取得了最佳平衡这也是我们深入讲解它的原因。3. 基础打包实战从零生成你的第一个.exe理论说得再多不如动手试一次。我们从一个最简单的“Hello World”脚本开始完成一次完整的打包。3.1 环境准备与安装首先确保你已经在开发电脑上安装好了 Python 和 pip。然后通过 pip 安装 PyInstaller建议在虚拟环境中进行以避免污染全局环境。# 创建并激活虚拟环境可选但推荐 python -m venv pack_env # Windows: pack_env\Scripts\activate # macOS/Linux: source pack_env/bin/activate # 安装 PyInstaller pip install pyinstaller3.2 编写示例脚本创建一个名为hello_app.py的文件内容如下# hello_app.py import tkinter as tk from tkinter import messagebox def on_click(): messagebox.showinfo(问候, 你好世界\n这是我的第一个打包软件。) if __name__ __main__: root tk.Tk() root.title(我的小软件) root.geometry(300x200) label tk.Label(root, text欢迎使用, font(Arial, 14)) label.pack(pady20) btn tk.Button(root, text点击问候, commandon_click, height2, width15) btn.pack() root.mainloop()这个脚本使用了 Python 标准库中的tkinter来创建一个简单的图形界面这样打包后的效果更直观不像命令行程序那样一闪而过。3.3 执行基础打包命令打开终端命令行切换到hello_app.py所在的目录执行最基本的打包命令pyinstaller hello_app.py运行后你会看到终端输出大量的分析信息。完成后当前目录下会生成两个新文件夹build和dist。build文件夹是打包过程中的临时文件可以安全删除。dist文件夹里就是我们的成果。里面会有一个hello_app文件夹在Windows上是hello_app.exe所在文件夹这个文件夹里包含了可执行文件hello_app或hello_app.exe以及它运行所需的所有依赖库。现在你可以进入dist/hello_app目录直接双击hello_app.exeWindows或通过终端运行./hello_appmacOS/Linux一个独立的窗口程序就会启动完全不需要原生的 Python 环境。3.4 生成单文件程序刚才生成的是一个目录分发时需要把整个文件夹给别人。如果想生成一个单独的可执行文件可以使用--onefile参数pyinstaller --onefile hello_app.py这次在dist目录下你会直接得到一个独立的可执行文件比如hello_app.exe。这个文件体积会比之前大因为它内部压缩了所有依赖。双击它效果和之前一样。实操心得第一次打包时建议先不使用--onefile而是生成目录形式。如果程序运行出错你可以更方便地检查dist目录下的文件结构看看是否缺失了某些依赖文件比如.dll或数据文件排查问题会更直观。4. 高级配置与疑难杂症排查基础打包只能应对最简单的脚本。真实项目往往复杂得多有自定义图标、依赖外部数据文件、使用了特殊的库或框架。下面我们就来攻克这些实际问题。4.1 定制化打包图标、版本信息与启动参数添加应用程序图标一个好看的图标能让你的软件看起来更专业。准备一个.ico格式的图标文件Windows或.icns格式的图标文件macOS放在项目目录下使用--icon参数。pyinstaller --onefile --iconmyapp.ico hello_app.py隐藏命令行窗口仅Windows GUI程序如果你的程序是图形界面如 tkinter, PyQt, PySide打包后运行时可能会先闪一个黑色的控制台窗口。对于纯GUI程序我们需要隐藏它使用--windowed或-w参数。pyinstaller --onefile --windowed --iconmyapp.ico hello_app.py设置版本信息仅Windows在Windows中可执行文件的属性里可以显示版本、公司名等信息。这需要通过一个版本信息文件.rc文件来指定或者使用PyInstaller的--version-file参数。更简单的方法是在命令行直接传递一些元数据但功能有限pyinstaller --onefile --windowed --iconmyapp.ico --name 我的酷炫软件 --version 1.0.0 hello_app.py--name参数可以指定生成的可执行文件的名字。4.2 处理复杂依赖数据文件、隐藏导入与钩子这是打包中最容易踩坑的地方。打包数据文件如果你的程序需要读取外部的图片、配置文件、数据库文件等这些文件不会自动被打包进去。你需要使用--add-data参数来告诉 PyInstaller。参数格式是源路径;目标路径Windows用分号;macOS/Linux用冒号:。假设你有一个config.ini文件和一个images文件夹需要打包。# Windows 示例 pyinstaller --onefile --windowed ^ --add-data config.ini;. ^ --add-data images/*;images/ ^ hello_app.py # macOS/Linux 示例 pyinstaller --onefile --windowed \ --add-data config.ini:. \ --add-data images/*:images/ \ hello_app.py这会将当前目录的config.ini复制到打包后的程序根目录.将images文件夹下的所有文件复制到打包后程序的images/子目录下。在你的代码中访问这些文件的方式也需要改变。不能再用基于当前工作目录的相对路径因为打包后程序可能从任何地方启动。PyInstaller 提供了一个标准方法来获取打包后资源的绝对路径import sys import os def resource_path(relative_path): 获取打包后资源的绝对路径 if hasattr(sys, _MEIPASS): # 运行在打包后的临时环境中 base_path sys._MEIPASS else: # 运行在开发环境中 base_path os.path.abspath(.) return os.path.join(base_path, relative_path) # 使用示例 config_file resource_path(config.ini) image_file resource_path(images/logo.png)处理“隐藏导入”如前所述PyInstaller 的静态分析会漏掉动态导入的模块。此外一些大型框架如 PyQt5, Django, TensorFlow的部分子模块也可能被漏掉。运行时你会看到ModuleNotFoundError。解决方法是用--hidden-import参数显式告诉 PyInstaller。例如如果你的代码动态导入了pandas.io.json但PyInstaller没找到pyinstaller --onefile --hidden-import pandas.io.json my_script.py对于复杂的库你可能需要添加多个--hidden-import。如何知道缺了哪些一个笨办法但有效先打包运行看报错信息里缺什么模块就加什么。更系统的方法是查阅PyInstaller社区为常见库维护的“钩子”hooks。使用钩子文件钩子文件hook是PyInstaller的一种扩展机制可以更精细地控制如何打包某个特定模块。例如PyQt5就需要特定的钩子来正确处理其插件和资源文件。通常PyInstaller自带了许多流行库的钩子。如果遇到问题你可以搜索“PyInstaller hook for [库名]”有时需要自己编写或修改一个简单的钩子文件一个.py文件然后用--additional-hooks-dir参数指定其目录。4.3 打包实战问题排查清单即使配置了所有参数打包后的程序可能依然无法运行。别慌按以下步骤排查在命令行中运行不要直接双击可执行文件而是打开终端切换到可执行文件所在目录在命令行中运行它如./myapp.exe。这样程序崩溃时产生的错误信息会打印在终端里而不是一闪而过。这是最重要的调试手段。检查依赖是否完整对比开发环境和打包环境。确保打包时使用的Python版本和库版本与开发时一致。特别检查那些包含C扩展的库如NumPy, Pandas, PyQt它们对平台和Python版本非常敏感。查看警告信息PyInstaller在打包过程中会输出很多警告WARNING。不要忽略它们这些警告常常提示了哪些模块可能没被正确分析、哪些文件可能缺失。根据警告去添加--hidden-import或--add-data。使用调试模式在打包命令中加入--debug参数或者--debug all会生成一个包含更多调试信息的可执行文件有时能提供更详细的错误线索。隔离测试创建一个全新的虚拟环境只安装项目最核心的依赖然后在这个干净的环境中打包。这可以排除全局环境或其他项目带来的干扰。查阅日志PyInstaller在build目录下会生成一个.toc文件如hello_app/warn-hello_app.txt里面详细列出了分析过程中的所有信息和警告是排查问题的宝贵资料。5. 针对不同GUI框架的打包要点不同的GUI框架在打包时有各自的“坑点”。这里列举几个最常见的PyQt5 / PySide2必须处理Qt插件PyQt5的图形渲染、图片格式支持等功能由插件实现。打包时必须将这些插件位于PyQt5/Qt/plugins一起打包否则程序可能无法显示图片或使用某些风格。# 这是一个常见的处理方式通过钩子文件自动完成但有时需要手动指定 # 手动添加插件目录作为数据文件 pyinstaller --onefile --windowed ^ --add-data venv/Lib/site-packages/PyQt5/Qt/plugins/*;PyQt5/Qt/plugins/ ^ my_qt_app.py隐藏导入通常需要添加--hidden-import PyQt5.sip。使用官方工具对于PyQt5可以考虑使用其自带的pyqt5deploy工具进行更专业的部署但复杂度更高。Tkinter相对最简单因为它是Python标准库的一部分。主要注意就是前面提到的--windowed参数来隐藏控制台。如果使用了PILPillow库来处理图片需要确保图片解码器被正确打包可能需要--hidden-import PIL._imaging。Kivy, Dear PyGui等较新框架务必查阅其官方文档中关于“打包”或“分发”的章节。这些框架的打包步骤往往有特殊要求社区可能已经有成熟的打包脚本或指南。Web框架如用Eel、PyWebView做桌面GUI这类框架通常将浏览器内核打包进去。打包后的体积会非常大可能超过100MB。务必使用--add-data正确打包你的前端文件HTML, CSS, JS。注意杀毒软件误报因为内嵌浏览器引擎的行为可能被误判。6. 优化与分发让软件更专业生成可执行文件只是第一步要让软件真正可用、好用还需要一些优化工作。减小体积PyInstaller打包的程序尤其是单文件体积往往不小。可以尝试以下方法“瘦身”使用UPX压缩UPX是一个可执行文件压缩工具。PyInstaller支持在打包时自动调用UPX压缩二进制文件。首先 下载UPX 并将其所在目录添加到系统PATH或者将upx.exe放在PyInstaller能找到的地方。PyInstaller默认会尝试使用UPX如果找不到会跳过。使用UPX通常能减少30%-50%的体积。清理不必要的依赖检查你的requirements.txt移除开发依赖如pytest, flake8等。在虚拟环境中只安装运行必需的包。排除大型库的测试和文档文件有些库会包含大量测试用例和文档。PyInstaller默认会排除一些但你可以通过--exclude-module参数进一步排除确信用不到的模块风险较高需测试。代码签名高级/发布必备如果你打算公开发布软件特别是给Windows用户代码签名几乎是必须的。没有签名的软件在运行时会被Windows Defender等安全软件弹出“不明发布者”的警告甚至直接拦截。代码签名需要向证书颁发机构CA购买代码签名证书价格不菲。但对于商业软件或希望提供良好用户体验的开源软件这是值得的投资。签名过程通常在生成可执行文件之后使用微软的signtool等工具进行。创建安装程序对于包含多个文件、需要创建开始菜单快捷方式或写入注册表的复杂软件直接分发一个文件夹或单文件显得不够专业。这时可以使用安装程序制作工具如Inno Setup(Windows)免费、强大、脚本化非常流行。NSIS(Windows)同样免费且强大。macOS可以使用create-dmg工具来制作DMG磁盘映像文件。Linux可以打包成.deb(Debian/Ubuntu) 或.rpm(Fedora/RHEL) 包。这些工具可以将你的dist目录下的文件打包成一个标准的安装程序让用户像安装其他任何软件一样安装你的Python应用。最后别忘了充分测试。在你的打包环境、一台干净的虚拟机、甚至不同版本的Windows/macOS上测试打包好的程序确保所有功能正常没有隐藏的依赖问题。打包是一门实践性极强的技术每一个项目都可能遇到独特的问题。但掌握了上述核心原理和排查方法你就能从容应对大多数挑战真正让你写的Python脚本变成人人可用的便捷软件。

相关新闻

Hello World程序解析:从入门到工程实践

Hello World程序解析:从入门到工程实践

1. 为什么"Hello, World!"如此重要在编程的世界里,"Hello, World!"就像婴儿的第一声啼哭,简单却意义非凡。我第一次接触编程时,屏幕上跳出这行文字的那一刻,那种成就感至今难忘。这个看似简单的程序&#xff…

2026/8/13 22:18:56 阅读更多 →
Docker容器化部署Integrity CI:跨平台安装与版本管理方案

Docker容器化部署Integrity CI:跨平台安装与版本管理方案

Docker容器化部署Integrity CI:跨平台安装与版本管理方案 【免费下载链接】integrity Continuous Integration server 项目地址: https://gitcode.com/gh_mirrors/in/integrity Integrity是一款轻量级持续集成(CI)服务器,能…

2026/8/14 1:25:16 阅读更多 →
Bundle-Stats与CI/CD集成:自动化性能监控与构建质量保障

Bundle-Stats与CI/CD集成:自动化性能监控与构建质量保障

Bundle-Stats与CI/CD集成:自动化性能监控与构建质量保障 【免费下载链接】bundle-stats Analyze bundle stats(bundle size, assets, modules, packages) and compare the results between different builds. Support for webpack, rspack, vite, rolldown and roll…

2026/8/12 21:57:35 阅读更多 →

最新新闻

股权架构决定企业生死

股权架构决定企业生死

初创公司随便分配股权,极易埋下隐患。均分股权、大股东持股不足 67%,后期重大决策容易陷入僵局。合理的股权架构,要保证核心创始人控制权,预留激励份额,提前设置股东进退通道,从源头预防纠纷。

2026/8/14 2:19:15 阅读更多 →
Harness工程:驾驭AI代码智能体的结构化开发范式

Harness工程:驾驭AI代码智能体的结构化开发范式

最近,很多开发者发现,在 GitHub 上搜索“DeepSeek”时,除了官方仓库,一个名为“Deepseek Harness 团队”的公众号开始频繁出现。这引发了不少疑问:这个团队是官方的吗?Harness 到底是什么?它和最…

2026/8/14 2:19:15 阅读更多 →
AI Agent如何获取实时信息?豆包搜索API与MCP协议详解

AI Agent如何获取实时信息?豆包搜索API与MCP协议详解

最近在折腾 AI Agent 的时候,你是不是也遇到过这样的场景:想让 Agent 去查一下最新的技术文档、看看某个开源项目的 GitHub 主页,或者搜一下某个产品的官方定价。结果,要么是模型一本正经地“胡说八道”,给你编一个过时…

2026/8/14 2:19:15 阅读更多 →
GPT-5.6与Claude Fable 5在具身智能场景下的技术对比与工程实践

GPT-5.6与Claude Fable 5在具身智能场景下的技术对比与工程实践

最近在技术社区里,一个讨论热度很高的话题是:当AI需要“动手”时,谁更胜一筹?具体来说,就是OpenAI的GPT-5.6和Anthropic的Claude Fable 5,在“具身智能”这个前沿赛道上,哪个表现更好&#xff1…

2026/8/14 2:19:15 阅读更多 →
AI编辑器技能市场:模块化扩展与自动化工作流实践

AI编辑器技能市场:模块化扩展与自动化工作流实践

1. 项目概述:当AI编辑器遇上“技能市场”最近在AI应用开发圈里,一个词被反复提及:“可扩展性”。我们都在用各种AI工具,从写代码的Copilot到画图的Midjourney,但很多时候,我们需要的不是一个功能固定的“黑…

2026/8/14 2:19:15 阅读更多 →
联想笔记本UEFI引导修复:解决winload.efi丢失错误0xc0000225

联想笔记本UEFI引导修复:解决winload.efi丢失错误0xc0000225

1. 问题引入:当熟悉的开机画面变成蓝屏代码那天下午,我正打算用那台老伙计——一台联想拯救者Y7000P(2019款)处理点急事,按下电源键,熟悉的联想Logo闪过之后,等待我的不是Windows的登录界面&…

2026/8/14 2:18:14 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →