python编写带界面的软件,需要安装哪些插件

1 详细需求:

Windows系统,需要打包exe,界面不复杂。

2 方案

针对你 Windows 平台 + 打包 exe + 界面不复杂 的需求,最稳妥、省心的方案是 Tkinter + PyInstaller 。如果希望界面稍微现代一点,可以用 CustomTkinter,但打包时要多注意一个细节。

2.1📊 方案对比

方案 安装包 打包难度 exe 体积 界面美观度 商用授权
Tkinter 无需安装(Python 自带) ⭐ 最简单 约 10-15 MB 基础 无限制
CustomTkinter pip install customtkinter ⭐⭐ 需手动加 --add-data 约 15-25 MB 现代 无限制
PySide6 pip install PySide6 ⭐⭐⭐ 需处理 Qt 插件 约 35-60 MB 专业 LGPL,可闭源商用

对于"界面不复杂"的场景,Tkinter 和 CustomTkinter 完全够用,没必要为了简单界面引入体积庞大的 Qt 框架。

2.2✅ 推荐方案:Tkinter + PyInstaller(最省事)

安装清单(只有两个包):

bash 复制代码
pip install pyinstaller pillow
  • pyinstaller:打包工具。
  • pillow:处理图标等图片资源(可选)。

打包命令(单文件 + 无控制台):

bash 复制代码
pyinstaller --onefile --noconsole --icon=app.ico your_app.py
  • --onefile:生成单个 exe。
  • --noconsole:GUI 程序专用,不弹出黑色命令行窗口。
  • --icon:设置 exe 图标。

关于"单文件"的取舍 :--onefile 生成的是单个 exe,分发方便,但启动时会先把内容解压到临时目录,启动速度会比 --onedir 慢 1-3 秒 。如果不介意分发一个文件夹,用 --onedir 启动会快很多(0.5-1.2 秒左右)。对于界面简单的工具,--onefile 的启动延迟通常可以接受。

2.3🎨 备选方案:CustomTkinter(界面更现代)

CustomTkinter 基于 Tkinter,API 几乎一样,但外观更现代。打包时有一个必须注意的坑:

它包含了 .json、.otf 等数据文件,PyInstaller 不会自动打包,不能用 --onefile ,必须用 --onedir 并手动添加数据目录。

打包命令示例:

bash 复制代码
pip show customtkinter   # 先找到库的安装路径

pyinstaller --onedir --noconsole \
  --add-data "C:/.../site-packages/customtkinter;customtkinter/" \
  your_app.py

把 pip show 显示的 Location 路径拼到 --add-data 里。不这样做的话,运行时会出现 FileNotFoundError: theme.json 之类的错误。

2.4⚠️ 如果考虑 PySide6:LGPL 合规打包提醒

如果你之后因为功能需要转向 PySide6,需要注意:用 --onefile 打包 PySide6 应用,可能不符合 LGPL 的"允许用户替换库"要求,因为单文件把所有内容都内嵌死了。

合规的做法是使用 --onedir ,让 PySide6 作为独立的 .dll 文件存在于目录中,用户理论上可以替换它们。如果你的应用只是内部使用或不分发,合规压力会小很多;但如果是正式对外发布的闭源商业软件,建议用 --onedir 并附上 LGPL 声明。

2.5💎 总结

你的需求下,直接 pip install pyinstaller pillow,用 Tkinter 写界面,--onefile --noconsole 打包,就是最精简、最省事的路径。整个过程不需要额外安装 GUI 框架,打包体积也最小。

3 离线安装pyinstaller,还需要在这之前安装什么插件

离线安装 PyInstaller,核心是提前准备好它本身以及所有它依赖的 Python 包。最省心的方法是在一台有网络的电脑上,用 pip download 把所有东西一次性下载好,再拷到离线电脑上安装。

3.1📋 依赖清单:需要准备哪些包?

在 Windows 系统下,PyInstaller 的核心依赖通常包括以下几类:

依赖包 作用
setuptools 用于构建和安装 Python 包的基础工具
altgraph 用于创建和解析程序集(Windows 平台必需)
pefile 用于解析 Windows PE 文件格式(Windows 平台必需)
pywin32-ctypes 提供对 Windows API 的访问(Windows 平台必需)
packaging 用于处理版本号和依赖关系
pyinstaller-hooks-contrib PyInstaller 的官方 hooks 集合,用于处理各种第三方库

| importlib-metadata | 为 Python < 3.10 提供 importlib.metadata 功能 |

| macholib | 仅在 macOS 平台需要,Windows 下无需下载 |

注意 :如果你使用的是 Python 3.10 或更高版本,importlib-metadata 通常不是必需的;macholib 也只在 macOS 下需要。

3.2💻 第一步:在有网络的电脑上下载所有包

在一台能联网的 Windows 电脑上(Python 版本需与离线电脑一致),打开命令提示符,执行以下命令,将所有依赖包下载到 C:\pyinstaller_offline 文件夹中:

bash 复制代码
pip download pyinstaller -d C:\pyinstaller_offline

这条命令会自动解析 PyInstaller 的全部依赖,并把它们连同 PyInstaller 本身一起下载到指定目录。下载完成后,C:\pyinstaller_offline 文件夹里会包含多个 .whl 文件。

3.3📦 第二步:在离线电脑上安装

将 C:\pyinstaller_offline 文件夹整体拷贝到离线电脑上(例如放到 D:\offline_packages),然后在离线电脑的命令提示符中执行:

bash 复制代码
pip install --no-index --find-links=D:\offline_packages pyinstaller

这条命令告诉 pip:不要联网 (--no-index),从本地文件夹找包 (--find-links),并安装 PyInstaller。pip 会自动从该文件夹中解析并安装所有需要的依赖。

3.3⚠️ 可能遇到的特殊情况

如果离线环境安装时提示缺少 future 包

某些旧版本的 PyInstaller 在 Windows 上还依赖 future 包。你可以在第一步的下载命令中额外加上它:

bash 复制代码
pip download pyinstaller future -d C:\pyinstaller_offline

如果下载时提示 pip 版本过旧

先在有网电脑上更新 pip:

bash 复制代码
python -m pip install --upgrade pip

如果直接安装 PyInstaller 的 .whl 文件报错

确保你下载的是与离线电脑 Python 版本和操作系统位数 (如 win_amd64)完全匹配的 .whl 文件。如果版本不匹配,可以尝试下载源码包(.tar.gz)并在离线电脑上通过 pip install ./包名.tar.gz 安装。

3.4✅ 验证安装

安装完成后,在离线电脑的命令提示符(非管理员身份)中运行:

bash 复制代码
python -m PyInstaller --version

如果能正常显示版本号,就说明 PyInstaller 及其所有依赖都已成功安装,可以开始打包你的 exe 了。

相关推荐
Wx-bishekaifayuan1 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
青少儿编程课堂2 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
计算机编程指导师2 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
Wx-bishekaifayuan2 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
WeiXin_DZbishe2 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码2 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
WeiXin_DZbishe2 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计
沫璃染墨3 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss