Python 打包成 EXE 完整教程(单文件 \+ 整个工程)

我给你一套最简单、最通用、零报错 的打包方案,用 PyInstaller (Python 最主流、最稳定的打包工具),不管是单个 .py 文件 ,还是整个项目工程(多文件、带图片 / 配置 / 依赖库),都能一键打包成独立 EXE。

全程不用装复杂环境,复制命令就能用!


一、先安装打包工具

打开 CMD / 终端,执行:

bash 复制代码
pip install pyinstaller

二、场景 1:打包 单个 Python 文件

比如你只有一个 main\.py,没有其他依赖文件。

最简命令(生成单个 EXE)

bash 复制代码
pyinstaller -F -w main.py

命令解释

  • \-F:打包成单个独立 EXE 文件(最常用)

  • \-w:运行时不弹出黑色控制台窗口(GUI 程序必加)

  • 如果是命令行工具,去掉 -w

输出位置

打包完成后,去你的项目文件夹里找:

Plain 复制代码
dist/
   main.exe  <-- 这就是最终可直接运行的文件

三、场景 2:打包 整个 Python 工程

多文件项目(比如:main\.pyutils\.pyconfig\.jsonimages/ 文件夹、venv/ 虚拟环境)。

核心命令(推荐)

bash 复制代码
pyinstaller -F -w main.py

PyInstaller 会自动扫描并打包所有导入的模块、依赖文件


四、如果项目里有 外部资源(图片 / 配置 / 模型 / 数据库)

比如:

  • images/logo\.png

  • config\.yaml

  • data/model\.pth

直接打包会找不到文件,必须用 \-\-add\-data 把资源一起打进 EXE。

Windows 命令格式

bash 复制代码
pyinstaller -F -w --add-data "资源路径;目标路径" 主文件.py

示例(打包带图片 + 配置文件)

bash 复制代码
pyinstaller -F -w ^
--add-data "images;images" ^
--add-data "config.yaml;." ^
main.py
  • images;images:把 images 文件夹打包进 EXE,运行时自动释放到同目录 images

  • config\.yaml; \.:把配置文件放到根目录


五、进阶:给 EXE 加 图标

准备一个 \.ico 格式图标(不能是 png/jpg),放在项目目录。

命令:

bash 复制代码
pyinstaller -F -w -i logo.ico main.py

六、最常用的 4 条万能命令(直接复制用)

1. 单文件 + 无控制台(GUI 软件)

bash 复制代码
pyinstaller -F -w main.py

2. 单文件 + 控制台(工具脚本)

bash 复制代码
pyinstaller -F main.py

3. 单文件 + 无控制台 + 图标

bash 复制代码
pyinstaller -F -w -i app.ico main.py

4. 整个工程 + 资源文件 + 图标

bash 复制代码
pyinstaller -F -w -i app.ico --add-data "images;images" --add-data "config.yaml;." main.py

七、打包后常见问题(必看)

  1. EXE 双击打不开 / 一闪而过

    • 大概率是缺资源文件,或代码报错

    • 去掉 -w 用控制台运行,看报错信息

  2. 文件太大(几百 MB) pip install virtualenv virtualenv venv venv\\Scripts\\activate pip install 你的依赖 pip install pyinstaller再打包,体积能缩小到 10~30MB

    • 使用 虚拟环境,只装项目用到的库
  3. 杀毒软件误报

    • PyInstaller 打包的程序普遍会被误报

    • 解决方法:添加信任 / 用 \-\-noupx 命令


八、快速总结

  1. 安装:pip install pyinstaller

  2. 单文件:pyinstaller \-F \-w 文件名\.py

  3. 多文件工程:一样的命令,自动打包依赖

  4. 带资源:加 \-\-add\-data

  5. 输出文件在:dist/xxx\.exe


总结

  • 单个 .py 文件 :用 pyinstaller \-F \-w 文件名\.py

  • 整个工程:同样命令,自动识别多文件

  • 带图片 / 配置 :用 \-\-add\-data 绑定资源

  • 最终 EXE 都在 dist 文件夹里,可直接发给别人运行(无需装 Python)


相关推荐
VALENIAN瓦伦尼安教学设备几秒前
转子/行星/平行轴齿轮箱综合故障模拟实验台可复现常见机械问题
大数据·数据库·人工智能·嵌入式硬件·算法
不好听6134 分钟前
向量数据库:Milvus 与 MySQL 的本质差异
数据库
倒流时光三十年7 分钟前
第一阶段 05 · Java 客户端查询类详解(Query / SearchCriteria / Response 与复杂拼接)
java·开发语言·python
用户0942485680316 分钟前
第18章:Mongo复制集运维——故障切换、节点扩容与数据重同步
数据库·mongodb
CTA终结者21 分钟前
近期AI量化学习,把规则改写接到策略开发
人工智能·python
zandy101121 分钟前
MCP 协议落地 BI:衡石 Data Agent 的工具生态扩展技术解析
microsoft·mcp协议·data agent
有Li23 分钟前
使用整合电子健康记录的大语言模型智能体实现前列腺癌患者教育个性化文献速递/医学智能体前沿
人工智能·python·机器学习·语言模型·医学生
智码看视界37 分钟前
Day33-数据层 × 中间件AI化篇:Redis缓存经典问题-击穿、穿透、雪崩的终极解决方案
数据库·redis·缓存·中间件·穿透·雪崩·击穿
米码收割机42 分钟前
【Python】Flask+SQLite_web 宠物领养系统 (源码+文档)【独一无二】
前端·python·flask
会编程的土豆1 小时前
功能详解 01 · 用户注册:从表单到数据库一行
开发语言·数据库·后端·mysql·golang