说实话,你有没有遇到过这种情况:辛辛苦苦写了个 Python 小工具,想分享给朋友用,结果对方一脸懵逼——“Python是啥?pip又是啥?环境变量怎么配?”
烦不烦?确实烦。
我也经常被这个问题困扰。后来发现了一个叫 Pynsist 的开源工具,简直是救星。它能把你的 Python 程序打包成一个正儿八经的 Windows 安装程序(就是那种 .exe 安装向导),别人双击就能装,装完就能用,根本不需要知道 Python 是啥。
这玩意儿到底怎么工作的?
Pynsist 的思路特别直接——它把 Python 解释器、你的代码、还有所有依赖库,统统塞进一个安装包里。用户安装的时候,这些东西就自动解压到电脑上,然后创建个快捷方式,完事儿。
你可能会问,那跟 PyInstaller 有啥区别?好问题。PyInstaller 是打包成单个 .exe 文件,而 Pynsist 走的是正规安装包路线,更像你平时下载的那些软件——双击安装程序,一路 Next,结束。而且它用的是 NSIS(Nullsoft Scriptable Install System)这个老牌安装制作工具,稳定性没得说。
三步搞定,真的不骗你
第一步,装工具。先装 NSIS(去官网下载就行),然后 pip 安装 Pynsist:
pip install pynsist
第二步,写个配置文件。新建一个 installer.cfg,大概长这样:
| 配置项 |
说明 |
例子 |
[Application] |
应用名称、版本、启动入口 |
name=我的工具 |
[Python] |
要打包的 Python 版本 |
version=3.9 |
[Include] |
依赖的第三方库 |
pypi_wheels = requests |
第三步,跑命令:
pynsist installer.cfg
喝口水的功夫,build/ 目录下就会生成一个 exe 安装包。拿去给别人用吧,绝对比你解释“怎么装 Python”省事儿一百倍。
说几个坑,提前知道
别看我说得轻松,实际用的时候也有几个点要注意:
- Python 版本别乱选:Pynsist 2.7 需要 Python 3.6 以上,别用老版本折腾
- 依赖库要支持 wheel 格式:如果你用的包只有源码包没有预编译的 wheel,可能会报错
- 图标必须是 .ico:别的图片格式不行,得先转换一下
还有一个小技巧:如果你的程序需要读写用户数据(比如配置文件、数据库),记得把数据存在 %APPDATA% 下面,别傻乎乎地写在程序安装目录里——Windows 权限会给你上一课的。
适合谁用?
我觉得这工具最适合两类人:一是写小工具分享给非技术同事的开发者,二是想给客户交付桌面应用的自由开发者。当然啦,商业项目也能用,MIT 协议随便改。
不过说实话,如果你的程序特别复杂,比如用到了 C 扩展、需要注册系统服务、或者对性能要求极高,那 Pynsist 可能不太够用。这种时候还是老老实实研究 PyInstaller 或者专业打包工具吧。
总的来说,Pynsist 简单够用,上手成本低,能把 Python 程序变得像普通 Windows 软件一样“开箱即用”。这不就是我们想要的吗?
项目地址:https://github.com/takluyver/pynsist
|