Python 代码打包为 EXE 完全指南

Python 代码打包为 exe 完全指南(2025–2026 年最新实用版)

目前最主流、最稳定的几种打包方式对比(按推荐顺序):

排名工具优点缺点/坑点适合场景推荐指数 (2026)
1PyInstaller兼容性最好、社区最大、文档最全生成的 exe 偏大、启动稍慢几乎所有场景(首选)★★★★★
2Nuitka启动速度最快、文件体积较小、接近原生性能编译时间长、对依赖处理更严格对启动速度敏感的项目★★★★☆
3cx_Freeze跨平台支持好、配置灵活社区活跃度低、文档较老需要高度自定义打包逻辑★★★☆☆
4PyOxidizer极致体积优化、Rust 底层配置复杂、生态不成熟极致追求小体积的场景★★☆☆☆
5Shiv / PEX生成 .pex 文件(类似 jar),不生成 exe需要 Python 环境才能运行服务器/内部工具分发(非桌面程序)★★☆☆☆

绝大多数人(尤其是 Windows 桌面程序)2026 年仍然首选:PyInstaller

下面给出最实操的完整流程(以 PyInstaller 为主,附 Nuitka 补充)。

一、PyInstaller 完整打包流程(推荐)

步骤 1:环境准备
# 建议使用干净的虚拟环境 python -m venv pack-env # Windows pack-env\Scripts\activate # macOS/Linuxsource pack-env/bin/activate # 安装最新版(2026 年建议 ≥ 6.0) pip install --upgrade pyinstaller 
步骤 2:写一个最简单的测试程序(main.py)
# main.pyimport sys import tkinter as tk from tkinter import messagebox defmain(): root = tk.Tk() root.title("我的第一个打包程序") root.geometry("400x300") label = tk.Label(root, text="Hello from EXE!", font=("微软雅黑",16)) label.pack(pady=50) btn = tk.Button(root, text="点我", command=lambda: messagebox.showinfo("提示","打包成功!")) btn.pack() root.mainloop()if __name__ =="__main__": main()
步骤 3:第一次打包(最简单方式)
# 单文件模式(推荐给新手) pyinstaller -F main.py # 常用参数组合(强烈推荐) pyinstaller -F \ --noconfirm \ --clean \ --windowed \# 无控制台窗口(GUI程序必加) --icon=app.ico \# 可选:自定义图标 --name=MyNoteApp \# exe 文件名 --add-data "data;data"\# 如果有资源文件夹(注意分号是 Windows 用,Linux/macOS 用冒号) main.py 

打包完成后,文件出现在:

dist/ └── MyNoteApp.exe ← 这就是最终的 exe 
步骤 4:常见问题 & 解决方案(2026 年高频坑)
问题原因解决方案(最有效写法)
exe 启动闪退缺少依赖 / 路径错误--log-level=DEBUG 看日志;或用 --onedir 先测试
第三方库(如 pandas、pytorch)打包失败hook 不全pip install pyinstaller-hooks-contrib;必要时手动写 .spec 文件
中文路径/文件名乱码编码问题脚本保存为 UTF-8;打包时加 --utf8(较新版本支持)
exe 体积过大(100MB+)打包了整个 site-packages--exclude-module 排除无用模块;用 UPX 压缩(--upx-dir
杀毒软件报毒特征码误杀正常现象,用 --noupx 关闭压缩;或提交文件给杀毒厂商白名单
tkinter / PyQt 等 GUI 黑屏/不显示缺少资源--add-data "tcl;tcl"--add-data "tk;tk"(tkinter 常见)
步骤 5:推荐的完整 .spec 文件写法(进阶)
# myapp.spec# 运行一次 pyinstaller main.py 后会自动生成 .spec 文件,修改后用下面命令重新打包:# pyinstaller myapp.spec block_cipher =None a = Analysis(['main.py'], pathex=[], binaries=[], datas=[('images/*','images'),('config.yaml','.')], hiddenimports=['PIL._tkinter_finder'],# tkinter + pillow 常见补丁 hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=['torch','tensorflow'],# 排除掉不需要的重量级库 win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher,) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE( pyz, a.scripts, a.binaries, a.zipfiles, a.datas,[], name='我的记事本', debug=False, bootloader_ignore_signals=False, strip=False, upx=True,# 需要先安装 UPX console=False,# GUI 程序设为 False disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon='app.ico',)

二、Nuitka 快速补充(追求速度时用)

pip install nuitka # 最常用命令(单文件 + 优化) python -m nuitka \ --standalone \ --onefile \ --windows-disable-console \ --include-package-data=tkinter \ --windows-icon-from-ico=app.ico \ --output-dir=dist \ main.py 

Nuitka vs PyInstaller 启动速度对比实测平均值,2026 年数据):

  • PyInstaller 单文件:启动 3–8 秒
  • Nuitka 单文件:启动 0.5–2 秒(明显更快)

三、2026 年最务实建议总结

需求推荐工具一句话命令建议
最简单、最稳PyInstallerpyinstaller -F --windowed --name=MyApp main.py
启动速度最重要Nuitkapython -m nuitka --onefile --windows-disable-console main.py
体积最小Nuitka + UPX--enable-plugin=upx
有大量第三方库(pandas等)PyInstaller先用 --onedir 测试,再转单文件
需要开控制台(命令行工具)PyInstaller去掉 --windowed / --noconsole

需要我帮你针对某个具体项目(比如带 pandas、带 tkinter、带 requests、带 PyQt6 等)写出最优的打包命令吗?
或者你现在遇到什么打包报错/闪退问题?直接贴出来,我帮你分析。

Read more

2025年好用的Github开源AI LLM大语言模型WebUI框架推荐(2025 最新)大模型入门到精通,收藏这篇就足够了!

2025年好用的Github开源AI LLM大语言模型WebUI框架推荐(2025 最新)大模型入门到精通,收藏这篇就足够了!

导读 WebUI 框架的主要优点包括跨平台性强,可以在各种设备上运行;易于部署和更新,只需在服务器端修改;开发成本较低,使用通用前端技术;用户体验良好,可实现丰富的交互效果;硬件要求不高,普通设备即可访问;易于维护和扩展,方便添加新功能。 链接丨https://promptchoose.com/ai-tools/github-open-source-llm-webui-framework/ 大型语言模型(LLM)已经成为了一股不可忽视的力量。从对话系统到文本生成,LLM 的应用场景日益广泛。而为了更好地利用这些强大的工具,开发者们需要一个易于使用的界面来与这些模型进行交互。今天,我们就为大家带来了几个热门且最新的 GitHub 开源 LLM 大语言模型WebUI框架项目推荐。这些项目不仅能够帮助你快速构建自己的应用,还能让你体验到最前沿的技术成果。 项目名称Star 数项目地址Open WebUI49.6khttps://github.com/open-webui/open-webuiDify53.6khttps://github.com/langgenius/

By Ne0inhk
Microsoft Edge WebView2 Runtime(运行库)快速部署 + 调试指南(精简实用、适配开发 + 用户双场景)

Microsoft Edge WebView2 Runtime(运行库)快速部署 + 调试指南(精简实用、适配开发 + 用户双场景)

WebView2运行库 v143.0.3650.139 x64 精简安装(下载) 一、WebView2 Runtime 快速安装部署(用户 / 开发通用,必做) ✅ 1. 系统预装情况 ▸ Windows 11 系统 默认自带 常青版 WebView2 运行库,无需手动安装;▸ Windows 10/7/8.1 需手动安装,缺失则调用 WebView2 控件的软件会弹窗报错「缺少 WebView2 运行环境」。 ✅ 2. 两种官方安装方式(推荐) 方式 1:常青版(Evergreen Runtime)- 首选 ▸ 特点:体积小(引导包仅

By Ne0inhk
地理空间大揭秘:身份证首位数字的隐藏含义-使用WebGIS进行传统6大区域展示

地理空间大揭秘:身份证首位数字的隐藏含义-使用WebGIS进行传统6大区域展示

目录 前言 一、关于身份证的空间信息 1、身份证与省份信息 2、首位数字与区域 二、数字与空间展示可视化 1、地域及图例的前端定义 2、省份与区域信息展示 三、成果展示 1、华北地区 2、东北地区 3、华东地区  4、中南地区 5、西南地区 6、西北地区  四、总结 前言         在我们日常生活中,身份证号码是每个人独一无二的身份标识,它承载着丰富的信息,其中第一位数字更是蕴含着与地理空间紧密相关的秘密。这一位数字并非随意排列,而是与我国广袤的国土划分有着深刻的联系。通过 WebGIS(Web 地理信息系统)技术,我们能够以一种直观、生动的方式,将身份证首位数字所代表的地理区域进行可视化展示,从而揭开传统 6 大区域的神秘面纱。       中国地域辽阔,地理环境复杂多样。

By Ne0inhk
个性化图书推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

个性化图书推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着数字化阅读的普及,个性化图书推荐系统在提升用户体验和满足读者需求方面发挥了重要作用。传统的图书推荐方式往往基于简单的分类或热门榜单,难以满足读者多样化的兴趣偏好。现代推荐系统通过分析用户行为数据、阅读历史和偏好,能够提供更加精准的个性化推荐。本研究旨在开发一个基于SpringBoot后端、Vue前端和MySQL数据库的个性化图书推荐系统,该系统能够通过算法分析用户行为,动态调整推荐内容,从而提升用户的阅读体验和满意度。关键词:个性化推荐、数字化阅读、用户行为分析、动态调整、阅读体验。 本研究采用SpringBoot作为后端框架,结合Vue.js前端技术,构建了一个高效、可扩展的个性化图书推荐系统。系统通过MySQL数据库存储用户数据、图书信息和推荐记录,并利用协同过滤算法和内容-based算法实现精准推荐。功能模块包括用户注册与登录、图书浏览与搜索、推荐列表生成、用户反馈收集等。系统支持管理员对图书信息进行管理,同时提供用户个人中心,方便查看阅读历史和推荐记录。后端采用RESTful API设计,前端通过Axios实现数据交互,确保系统的高效运行和良好的用户体验。关键词:

By Ne0inhk