Python 转 EXE (实用工具)

Python 转 EXE 完整指南(PyInstaller)

**注意:**只能在 Windows 系统打包出 Windows 的 exe;Mac 只能打包 mac 程序,不能跨系统编译。

一、安装 PyInstaller

打开 cmd / PowerShell,执行:

bash 复制代码
pip install pyinstaller

多 Python 版本环境下,使用:

bash 复制代码
py -3 -m pip install pyinstaller

二、进入 py 文件目录

bash 复制代码
# 示例,换成你自己的文件夹路径
cd D:\code\demo

三、打包命令(最常用)

3.1 基础打包命令

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

3.2 参数说明

参数 说明
-F 打包成单个独立 exe 文件(推荐,方便发给别人);不带 -F 会生成一堆依赖文件夹
-w 运行时隐藏黑色控制台窗口(GUI 程序才加,print 打印的程序不要加)
-i xxx.ico 设置 exe 图标
-n myapp 自定义 exe 名称
--add-data 附带图片/配置等静态资源(Windows 用分号 ; 分隔)

四、打包完成后的产物

打包成功后,目录会生成 3 个东西:

  • build/:临时打包缓存(可删除)

  • dist/ :exe 在这里!

  • xxx.spec:打包配置文件(可删除)

直接去 dist 文件夹拿 exe,发给没有装 Python 的 Windows 电脑也能运行。

五、资源文件(图片、json、csv)打包重点

假设你有 config.json,需要打包进 exe:

bash 复制代码
pyinstaller -F --add-data "config.json;." test.py

代码里读取资源路径要兼容打包:

python 复制代码
import sys, os

def get_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)

# 使用
file_path = get_resource_path("config.json")

六、常见坑

  1. pyinstaller 不是内部命令 :把 Python 的 Scripts 目录加到环境变量,或者用 python -m PyInstaller test.py

  2. exe 体积很大:正常,内置 Python 解释器;可以用虚拟环境只装必要包来减小体积

  3. 双击 exe 一闪而过 :不要加 -w,或者在代码末尾加 input() 暂停看报错

  4. 杀毒软件误报:PyInstaller 打包文件经常被 Windows Defender 报毒,属于误报

七、可视化工具:auto-py-to-exe

不想敲命令可以用图形界面版,底层还是 PyInstaller:

bash 复制代码
pip install auto-py-to-exe
auto-py-to-exe

会打开网页窗口,点选配置一键打包。

相关推荐
全栈练习生1 小时前
DeepSeek 稀疏注意力
python·ai
我命由我123451 小时前
6-3.Python 异常处理 - 异常处理进阶(else 块与 finally 块、异常传递、自定义异常)
开发语言·前端·数据库·后端·python·学习·java-ee
额额额对了1 小时前
【项目实战】从IMX6ULL环境监测到N647 AI视觉加速
linux·开发语言·嵌入式硬件
FYKJ_20101 小时前
springboot高考志愿填报推荐系统14332-计算机课程设计、毕业设计
javascript·spring boot·python·架构·django·课程设计·高考
卷无止境1 小时前
长篇写作 Skill 横向盘点:从单文件指令到多智能体流水线
后端·python
熊猫钓鱼>_>1 小时前
端侧 NPU 轻量大模型推理接入笔记【鸿蒙心迹】
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙
外收内放1 小时前
FastAPI猜字谜实战(8):收官
开发语言·python·学习·fastapi
爱敲代码的TOM1 小时前
10.27 易购软件 Java开发线下一面
java·开发语言
学逆向的1 小时前
C++ 别名命名空间
开发语言·c++·网络安全