简介:PySimpleGUI 4.60.5免费老版本安装包及配套安装指南,面向需要绕开5.0收费限制的Python桌面应用开发者。目前pip默认安装的5.0及以上版本会提示试用30天,而这份资源提供4.60.5版本完整源码与构建产物,可自由使用,并附带三步式离线安装说明,帮助快速恢复本地GUI开发环境。压缩包为rar格式,共13个文件,以5个py源码文件为核心,辅以4个txt说明文档、PKG-INFO与egg-info等包元数据、setup.cfg构建配置,整体仅1.81MB,轻量易用。已有1392人学习下载,适合希望低成本入门PySimpleGUI、快速搭建窗口和表单应用的初中级开发者。借助该老版本,可避开收费提示,同时体验基于Tkinter、PyQt等多后端统一接口的便捷开发方式,快速创建按钮、输入框、表格等界面元素,并支持主题定制,适用于数据可视化、系统监控、工具脚本等常见桌面场景。
1. PySimpleGUI 4.60.5 老版本免费:5.0 收费之后的免费稳定选项
如果你的某个脚本昨天还在跑,今天突然报ModuleNotFoundError,先别急着改代码——很可能是 PySimpleGUI 被自动升级到了 5.x。5.0 开始走订阅收费,免费版停在 4.60.5,而相当一批教程和自助工具的代码在 5.x 里 import 直接不兼容。这里要拆的,就是 4.60.5 老版本的免费安装资源和一套从零开始的 pip 安装教程,顺便把降级、锁版本、离线备份这些坑一次性理清。适合手里有老代码、被自动升级坑过的开发者,也适合刚想用 PySimpleGUI 写桌面小工具、又不想一上来就付费的入门者。
2. 4.x 和 5.x 到底差在哪:版本收费策略与 API 变更的取舍
PySimpleGUI 在 4.x 阶段一直是自由使用的,后来 5.0 切换成收费订阅,这对老项目的影响不是“能不能用新版”,而是“pip 默认帮你升到新版以后,老代码里那些接口还在不在”。实际开发里,GUI 库的更换成本比普通工具库高得多,因为牵涉到窗口布局、事件循环、控件的回调名,散在几十个文件里,一个一个改到怀疑人生。与其面对未知的迁移成本,不如直接锁死在 4.60.5,把精力留给业务。
2.1 收费策略的分水岭:5.0 从免费转向收费订阅,4.60.5 成为免费终点
先说结论:4.60.5 是 PySimpleGUI 在免费授权阶段的最后一个稳定版本号。网上很多教程停留在 4.3x、4.5x 的年代,代码里用的还是sg.ChangeLookAndFeel()这类老函数;而 4.60.5 正好处在一个“老调用仍然兼容、新特性又补了不少”的位置。
所以在选版本的时候,我一般不建议直接跳去 4.30 或者 4.50:
- 4.30 以前的版本在 Python 3.10+ 下偶尔有类型标注问题;
- 4.60.5 修掉了一批文档生成和布局计算的小毛病;
- 从 4.60.5 开始,项目把授权协议改成了商业订阅制,代码仓库也换了维护节奏。
这三点意味着,手里如果有半旧的教程、半旧的轮子脚本,锁在 4.60.5 最稳。不是说 5.x 不好,而是“能免费拿到、能按老代码跑、社区资料最多”这三个条件同时满足的版本,只有 4.60.5。
提示:收费版本并不是不能试用,但商业授权和订阅制会让小团队在分发工具时多一层合规成本。老版本没有这个负担。
2.2 代码层面的差异:4.60.5 与 5.x 的几处明显变化
先看一个最简单的窗口创建,在 4.60.5 里长这样:
import PySimpleGUI as sg layout = [ [sg.Text("Hello", key="-TEXT-")], [sg.OK()], ] window = sg.Window("Demo", layout) while True: event, values = window.read() if event in (None, "OK"): break window.close()这段代码在 4.60.5 下直接跑,在 5.x 下大概率还是能跑,但如果你的项目里用过下面这些 API,就要注意了:
| 场景 | 4.60.5 的常见写法 | 5.x 里的变化 |
|---|---|---|
| 主题切换 | sg.theme("DarkBlue") | 保留,但部分主题名失效 |
| 窗口透明 | window.set_alpha(0.9) | 方式变了 |
| 元素更新 | element.update(value=...) | 推荐写法没变,但异常行为有差别 |
| 老风格函数 | sg.ChangeLookAndFeel() | 在 5.x 部分路径下不可用 |
| 多窗口事件 | window.read(timeout=...) | 返回结构有差异 |
这张表不是让你背下来,而是提醒一件事:5.x 并不是 4.60.5 的兼容升级,而是带商业授权的新基线。社区里大量教程、视频录屏、企业内部的公共组件,都是基于 4.60.5 这个免费基线写的。你在网上下载一个基于 4.x 的源码包,直接用 5.x 去跑,可能第一行import PySimpleGUI as sg不报错,但到了某个控件参数报错,报错信息直接指向新版本,那才是真的晕。
所以“选型”阶段,我的习惯是:先看项目里引用的第三方控件多不多,多就直接锁 4.60.5;如果是全新项目且团队能接受授权成本,再考虑 5.x。
2.3 为什么不选 4.60.0、4.60.4,偏要 4.60.5
你可能会问,4.60.5 和 4.60.4 差在哪里?实际上 4.60.x 这些小版本主要在做 bugfix,4.60.4 和 4.60.5 之间的差异比很多教程标题里写的“升级”小得多。但既然已经有免费的老版本停止更新,社区普遍形成的共识是:最后一个 4.x,也就是 4.60.5,是闭源免费形态下功能最全、已知问题最少的版本。
我的判据很简单:
- 如果包管理里能直接拿到 4.60.5,那就别装 4.60.2;
- 如果安装过程中发现镜像源里没有 4.60.5,可以退而求其次装 4.60.4,但要把下一章的锁版本步骤做好;
- 遇到
sg.run()、sg.Window相关的新旧参数,以 4.60.5 内置 docstring 为准。
说句实在话,版本号就差一个小数点,真没必要纠结到凌晨。关键是装完之后用pip show或者print(sg.__version__)确认到底落到哪个版本,而不是看终端滚动条一闪而过。
3. 安装 PySimpleGUI 4.60.5:pip 指定版本的三步走与参数说明
安装这块,绝大多数情况用 pip 就够了。但“指定版本安装”这件事,有几个细节和默认行为有关,如果你不加参数直接pip install PySimpleGUI,系统会去拉最新稳定版,也就是 5.x。这一章给你一条完整的安装路径,每步都带检查动作,避免装完才意识到版本不对。
3.1 先检查当前的 Python 环境与 pip 版本
安装任何包之前,我习惯先在当前终端里确认三件事:Python 解释器路径、pip 指向的路径、当前虚拟环境是否生效。因为很多“装不上”“装错版本”的问题,最终发现是系统解释器和虚拟环境不是同一个。
# 查看 Python 主版本号 python --version # 查看 pip 指向的解释器 python -m pip --version # 列出当前环境里已有的 PySimpleGUI,确认是否装了别的版本 python -m pip show PySimpleGUI参数说明:python -m pip这种写法比直接敲pip更稳,因为它保证pip和当前python是同一个解释器。pip show PySimpleGUI会显示已安装包的信息,如果输出WARNING: Package(s) not installed,说明当前环境还是干净的;如果已经装了 5.x,一会儿降级就有必要了。
在这步之后,把终端切到你的项目虚拟环境目录。如果没建虚拟环境,现在建一个:
# 创建名为 venv 的虚拟环境 python -m venv venv # Windows 下激活 venv\Scripts\activate # macOS / Linux 下激活 source venv/bin/activate激活完成后命令行提示符会多出(venv)前缀。这一步能隔离系统级 Python 干扰,让后面的版本号锁定只作用于当前项目。尤其是你在系统里同时装了 Python 3.8、3.10、3.12 的时候,虚拟环境能避免“刚才装给 3.10 了,现在 3.12 找不到包”这种经典翻车。
3.2 pip 安装指定旧版本:从 4.60.5 这个 tag 拉取
明确版本安装的语法很简单,就是包名==版本号:
# 在当前环境安装 PySimpleGUI 4.60.5 python -m pip install PySimpleGUI==4.60.5运行后,pip 会去 PyPI 上找名为PySimpleGUI且版本号精确等于4.60.5的发行文件。如果网络不通,可以加-i参数指定一个可用的公共镜像源,下面是一段常见做法:
# 使用镜像源,并禁用本地缓存,强制重新下载 python -m pip install PySimpleGUI==4.60.5 \ -i https://your-mirror.example.com/simple \ --no-cache-dir注意这里-i后面替换成你自己能访问的镜像源地址。--no-cache-dir的意思是不要用本机 pip 缓存里的旧包,这在之前装过 5.x、缓存里残留新版文件的时候很有用。如果安装过程出现编译错误,先别慌,看日志末尾:纯 Python 包一般不需要编译,报错多半是文件下载不完整或镜像同步延迟,换源重试即可。
提示:PySimpleGUI 本身是纯 Python 包,安装过程通常几秒完成,不需要额外编译工具链。要是看到大段编译日志,说明你可能把包名拼错了。
3.3 验证安装:用 import 和版本号做双重确认
安装结束不叫结束,验证过版本才算数。验证方式就两个命令:
# 方式一:通过 pip show 看版本字段 python -m pip show PySimpleGUI # 方式二:直接 import 后打印版本号 python -c "import PySimpleGUI as sg; print(sg.__version__)"pip show看到Version: 4.60.5只代表发行记录一致;sg.__version__是运行时包代码里的版本字符串。两者都对上了,说明装的就是目标版本。
如果想再稳妥一点,跑一个最小窗口程序,确认窗口能弹出来:
import PySimpleGUI as sg layout = [[sg.Text("4.60.5 安装验证")], [sg.OK()]] window = sg.Window("Check", layout) while True: event, values = window.read() if event in (None, "OK"): break window.close() print("窗口验证通过")这段代码的逻辑很简单:创建窗口、读取事件、遇到关闭或 OK 按钮就退出。注意如果当前机器是无桌面环境的服务器,弹窗会失败,属于环境限制,不是安装问题。在这种环境下,只看sg.__version__就好。
4. 版本安装与降级的避坑指南:五个高频翻车现场
下面是实际使用中翻车最多的几种现象。每条都按“现象 → 原因 → 解决”给你理一遍。
4.1 现象:pip install PySimpleGUI==4.60.5结果装成了 5.x
这个我见过太多次了。看到命令行里把PySimpleGUI==4.60.5写得很规范,但装完一查版本是 5.x。排查下来一般两个原因:一个是命令写错成了pip install PySimpleGUI latest之类;另一个是当前环境之前有 5.x 的安装记录,pip 复用了缓存。
原因:pip 在没有--no-cache-dir的时候可能拿本机缓存的 wheel 文件;而某些缓存目录里存的是新版本。
解决:先卸载,再带参数安装:
python -m pip uninstall PySimpleGUI -y python -m pip install PySimpleGUI==4.60.5 --no-cache-dir装完立刻重新执行python -c "import PySimpleGUI as sg; print(sg.__version__)"。如果还是 5.x,检查你是不是在激活的虚拟环境里敲的命令。
4.2 现象:import 直接报 ModuleNotFoundError
代码明明没有改,昨天还能跑,今天在命令行python test.py就报ModuleNotFoundError: No module named 'PySimpleGUI'。
原因:最常见的是终端激活的虚拟环境和运行脚本的解释器不一致。你之前用 Ctrl+C 复制了某条安装命令,但安装时激活的是venv1,运行脚本走的是venv2或者系统 Python。
解决:统一入口,把安装和运行都放在同一个解释器下:
python -m pip install PySimpleGUI==4.60.5 python -c "import PySimpleGUI as sg; print(sg.__version__)" python test.py这里的关键是,python -m pip install装到的是当前python命令所对应的环境;如果后面python test.py用的也是同一个python,问题就会消失。
4.3 现象:pip 默认装了 5.x,代码里sg.theme()不识别
这个现象更隐蔽:import 不报错,但运行到sg.theme("SystemDefault")或者窗口布局里的某个参数时报错。
原因:5.x 改了部分主题名和控件参数,教程里基于 4.x 的代码跑到 5.x 上,部分参数被移除了。
解决:一是从控制台确认版本,二是把版本锁定在 requirements 里,三是如果确实需要临时跑老项目,就在脚本头部加一段防御性判断:
import PySimpleGUI as sg # 如果版本不是 4.x,直接报错,避免后面黑匣子式的问题 if not sg.__version__.startswith("4.60"): raise RuntimeError(f"当前版本 {sg.__version__} 不是 4.60.x,请降级")这段代码的作用是把错误提前暴露,而不是让你在窗口代码里迷茫地排查。参数说明:startswith("4.60")是为了兼容 4.60.5 这类具体补丁号。
4.4 现象:离线服务器装不了,pip 一直报连接超时
内网机器没有外网权限,pip install直接卡住,报 timeout。
原因:pip 默认从 pypi 拉包,网络侧不通,而 PySimpleGUI 又没有打包进系统镜像。
解决:在有网的机器上下载 wheel 文件,再拷进内网装:
# 在有网的环境里下载 wheel 和依赖 pip download PySimpleGUI==4.60.5 -d ./wheelhouse --no-deps # 在内网环境使用本地目录安装 pip install --no-index --find-links=./wheelhouse PySimpleGUI==4.60.5--no-deps表示只下载 PySimpleGUI 本体,因为它是纯 Python 包,多数场景没有第三方依赖;--no-index表示不再去 PyPI 搜索,只从本地目录找;--find-links告诉 pip 去哪个目录找包。三步走完,离线环境就能装。
4.5 现象:pip list里是 4.60.5,但 IDE 里运行还是 5.x
这个最容易让人怀疑人生。命令行直接跑没问题,一进 IDE 跑就报错,看 IDE 的 Python 解释器路径又指向另一个环境。
原因:IDE 一般会在打开项目时选择自己配置的解释器,不一定是终端里激活的虚拟环境。你终端装的是C:\projects\venv,IDE 用的可能是全局 Python。
解决:在 IDE 终端里运行python -c "import PySimpleGUI as sg; print(sg.__file__, sg.__version__)",看__file__路径。如果路径不在项目 venv 里,就到 IDE 设置里把解释器换到项目 venv,或者干脆在 IDE 终端里重装一次。
5. 安装后的固化与离线备份:把版本锁进 requirements 和 wheelhouse
版本装对了,麻烦才刚开始。下次任何人在这台机器或另一台机器上执行pip install -r requirements.txt,如果没有锁版本,又会拉回 5.x。这章给两个我用得最多的技巧:requirements 固化,以及把 wheel 备份到本地。
5.1 用 requirements.txt 锁死版本
把依赖写进文件,是团队协作里最基础的一层保险:
# 把当前环境内 PySimpleGUI 的精确版本导出到文件 python -m pip freeze | grep -i pysimplegui > requirements.txt然后打开文件检查,内容应该类似PySimpleGUI==4.60.5。如果还想带上主版本范围,可以改成:
PySimpleGUI==4.60.5注意这里不推荐写成PySimpleGUI>=4.60,<5.0,因为免费版已经停止更新,范围只会让你在未来的某一天装到不明来源的补丁包。写死补丁号,是最省事的后悔药。
5.2 离线 wheelhouse 备份:几个包占不了多少地方
如果你经常在多个内网机器之间迁移,单靠 requirements 还不够,因为有些机器连不上任何源。所以我在项目里常年保留一个wheelhouse目录,里面放着已验证过的 PySimpleGUI==4.60.5 的 wheel 文件。
# 下载到本地目录,-d 指定输出文件夹 pip download PySimpleGUI==4.60.5 -d ./wheelhouse --no-deps拷贝到目标机器后,用--no-index --find-links安装,第四章里已经写过。这套做法有两次救了我的场:一次是客户内网电脑没有外网权限,一次是同事按网上教程装了一个魔改包,导致窗口渲染异常。我把 wheelhouse 拷过去,一分钟恢复原样。
从那以后,我每次装完第三方库,都强制多做一个动作:先把pip freeze里对应的一行单独摘进 requirements,再在有网环境里pip download一份到本地。十分钟的事,换来的却是换机器、重建环境、团队排错时都不慌。希望帮到你。
本文还有配套的精品资源,点击获取