新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python 做服务, html, js 打包单机 exe 的方法

发布时间:2026/9/25 6:15:35来源:尧图网络
Python 做服务, html, js 打包单机 exe 的方法
最终我还是学会了Vue 和 ElectronVue 是纯前端的通常跑在浏览器里大家习惯了Vue 网页。Electron 自带一套主进程模型很多人用原生 HTML JS 写 Electron没用过 Vue。之后再补一下详细步骤吧方案一本地 Web 服务模式最简单适合纯 HTMLJS这种方案的核心是Python 启动一个本地微型服务器如 Flask/FastAPI同时托管 HTML 静态文件最后打包成一个 exe。用户双击 exe 后程序会在后台启动服务并自动打开默认浏览器访问本地页面。优点开发简单完全保留你现有的 HTML/JS 代码无需修改前端逻辑。缺点会弹出系统默认浏览器且地址栏会显示http://127.0.0.1:xxxx看起来不太像传统的桌面软件。实现步骤在 Python 代码中使用框架挂载 HTML 目录。例如使用 FastAPIpython编辑from fastapi import FastAPI from fastapi.staticfiles import StaticFiles import uvicorn app FastAPI() # 将当前目录下的 web 文件夹作为静态资源挂载 app.mount(/, StaticFiles(directoryweb, htmlTrue), namestatic) if __name__ __main__: uvicorn.run(app, host127.0.0.1, port8000)使用 PyInstaller 打包。在命令行执行bash编辑pip install pyinstaller # --add-data 源路径;目标路径 (Windows下用分号Mac/Linux用冒号) pyinstaller --onefile --add-data web;web main.py打包后生成的dist/main.exe即可直接运行。方案二原生桌面窗口模式推荐体验最好如果你希望程序运行后弹出一个没有地址栏、菜单栏的独立窗口看起来像真正的单机软件强烈推荐使用PyWebView或Eel库。它们能调用系统自带的 WebView 组件Windows 上是 Edge/IE 内核来渲染你的 HTML。优点界面专业无浏览器地址栏支持 Python 与 JS 双向通信JS 可以直接调用 Python 函数。实现步骤以 PyWebView 为例安装依赖pip install pywebview修改 Python 启动代码python编辑import webview # 直接加载本地 HTML 文件 webview.create_window(我的单机应用, web/index.html) webview.start()同样使用 PyInstaller 打包bash编辑pyinstaller --onefile --windowed main.py注--windowed参数可以隐藏后台的黑框控制台窗口。方案三专业 Electron 混合模式适合复杂前端工程如果你的前端是基于 Vue、React 等现代框架构建的且需要极强的界面交互体验可以采用Electron Python的方案。优点界面极其华丽跨平台兼容性最好VS Code、Discord 都是这么做的。缺点打包体积较大通常 100MB 起步配置相对复杂。核心逻辑Electron 作为主进程负责显示界面同时通过child_process在后台静默启动你的 Python 脚本作为后端 API 服务。 打包时的核心注意事项无论你选择哪种方案在将 Python 和 HTML 打包成单机版时都需要解决以下两个关键问题资源路径问题最容易踩坑在开发时我们读取文件通常用相对路径如./web/index.html。但 PyInstaller 打包成单文件 exe 后程序运行时会把资源解压到一个临时的系统文件夹中。解决方案在 Python 代码中加入以下兼容函数来获取正确的绝对路径python编辑import sys import os def resource_path(relative_path): 获取打包后资源的绝对路径 if hasattr(sys, _MEIPASS): # PyInstaller 打包后的临时目录 return os.path.join(sys._MEIPASS, relative_path) return os.path.join(os.path.abspath(.), relative_path) # 使用时 # html_path resource_path(web/index.html)依赖环境缺失打包后的 exe 虽然自带了 Python 解释器但如果你的 Python 代码调用了系统级的 DLL比如某些图像处理库在别人的电脑上可能会报错。解决方案通常需要在目标电脑上安装Microsoft Visual C Redistributable运行库这是 Windows 运行很多软件的必备组件。建议如果你的前端只是普通的 HTMLJS优先尝试方案二PyWebView它既能保证单机软件的质感又能让你继续发挥 Python 处理后端逻辑的优势。需要我按方案二PyWebView给你出一份完整的、可直接运行的代码框架吗包含 Python 后端、HTML 前端调用和打包配置。参考 - 无厘头 PythonUnicodeDecodeError: utf-8 codec cant decode byte 0x99 in position 32: invalid start bytePython 读文件错误: invalid start byte / illegal multibyte sequence_leader_ww的博客-CSDN博客UnicodeDecodeError: gbk codec cant decode byte 0x99 in position 32: illegal multibyte sequencerawBytes str(vsrefl.rawBytes, gbk)无厘S 头和 history 历史相关单词source/sɔːs/n. 史料来源historical source 史料scholar/ˈskɒlə(r)/n. 学者史学研究者scholarship/ˈskɒləʃɪp/n. 学术史学研究sequence/ˈsiːkwəns/n. 次序时序事件先后顺序历史时序succession/səkˈseʃn/n. 继承继任连续succession of kings 王位承袭sovereign/ˈsɒvrɪn/n./adj. 君主主权的历史君主statue/ˈstætʃuː/n. 雕像历史纪念雕像stele/ˈstiːli/n. 石碑碑刻古代历史铭文碑settlement/ˈsetlmənt/n. 定居点聚落史前 / 古代聚居遗址survive/səˈvaɪv/v. 留存幸存survivaln. 遗存历史文物遗存synchronic/sɪŋˈkrɒnɪk/adj. 共时的史学 / 语言学同一时代scribe/skraɪb/n. 抄写员文书古代史官、抄书人scroll/skrəʊl/n. 卷轴古卷历史文献卷轴sanction/ˈsæŋkʃn/n. 法令批准古代法令siege/siːdʒ/n. 围城围攻历史战役
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

AI安全门槛的三重阀值:TTPs映射率、对抗鲁棒性与零日预测 2026/9/25 7:59:58

AI安全门槛的三重阀值:TTPs映射率、对抗鲁棒性与零日预测

1. 先划重点:根本不存在“OpenAI Astra模型”这回事你点开这条热搜时,大概率已经带着一丝困惑——“Astra”这个名字,既没出现在OpenAI官网的模型列表里,也没在任何一篇经同行评议的AI顶会论文中露过脸;它不在Hugging …

阅读更多 →
CSP-J初赛真题深度解析:从命题逻辑到备考策略的完整指南 2026/9/25 7:59:51

CSP-J初赛真题深度解析:从命题逻辑到备考策略的完整指南

1. 从一份“空壳”标题说起:CSP-J初赛真题到底该怎么用每年一到七八月份,后台就会涌进来大量类似的问题:“有没有2026年CSP-J初赛的真题和答案解析?”“孩子刚学完语法,直接刷初赛真题行不行?”“初赛是不是…

阅读更多 →
Atlas 300V 24G部署YOLOv5/YOLOv8:从CANN环境到推理调优全攻略 2026/9/25 7:59:51

Atlas 300V 24G部署YOLOv5/YOLOv8:从CANN环境到推理调优全攻略

如果你最近在碰AI落地相关的东西,一定会反复刷到一个词:atlas部署yolo。很多人拿到一台装了Atlas 300V 24G的服务器,第一反应就是“这不就是运算加速卡吗,装上驱动直接就能跑模型”。你要是真这么干,大概率会卡在第一步…

阅读更多 →
5.9minifyAll前端压缩:TaoToken统一Key接入VS Code压缩工作流 2026/9/25 7:59:51

5.9minifyAll前端压缩:TaoToken统一Key接入VS Code压缩工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
TypeDoc @event 标签详解:将事件 API 归入 Events 分组的机制与实践 2026/9/25 7:59:45

TypeDoc @event 标签详解:将事件 API 归入 Events 分组的机制与实践

开发工具文档 【免费下载链接】typedoc Documentation generator for TypeScript projects. 项目地址: https://gitcode.com/gh_mirrors/ty/typedoc 点击查看 免费下载 本文围绕 TypeDoc 的 event 标签展开:它是 Modifier 类型的文档注释标签&#xff0…

阅读更多 →
Locomotive Scroll 属性(Attributes)完整指南:data-scroll 系列声明式滚动与视口检测实战 2026/9/25 7:59:45

Locomotive Scroll 属性(Attributes)完整指南:data-scroll 系列声明式滚动与视口检测实战

【免费下载链接】locomotive-scroll 🛤 Detection of elements in viewport & smooth scrolling with parallax. 项目地址: https://gitcode.com/gh_mirrors/lo/locomotive-scroll 点击查看 免费下载 本文是 Locomotive Scroll 官方文档中 Attribut…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉