当前位置:首页>python>别再让用户装Python了!这个神器直接把程序打包成exe安装包

别再让用户装Python了!这个神器直接把程序打包成exe安装包

  • 2026-10-11 08:41:07
别再让用户装Python了!这个神器直接把程序打包成exe安装包

说实话,你有没有遇到过这种尴尬——辛辛苦苦写了个Python小工具,兴高采烈发给朋友,结果对方一句“双击咋没反应?”把你噎得半死。排查半天,哦,人家电脑里压根没装Python。你耐心解释“要先装个环境”,对方已经关对话框了。

烦吧?我也烦。

后来我翻到一个叫Pynsist的开源工具,哎你猜怎么着——它能把你的Python应用直接打包成一个正儿八经的Windows安装程序(.exe那种),用户双击就能装,装完就能用,根本不需要知道Python是啥。

这玩意儿到底干了啥?

Pynsist的核心思路特别粗暴:它不是把你的代码转成exe(像PyInstaller那种),而是直接把Python解释器和你写的程序、依赖的库一起塞进一个安装包里。用户安装时,相当于在他电脑里“偷摸”装了个便携版Python,然后你的程序就跑在这个小环境上。

你可能会问:那安装包岂不是很大?嗯……确实比单个exe大一点,但一般也就几十兆,现在谁还在乎这点空间啊。

我上手试了试,门槛比想象的低

要用Pynsist,你得先装两个东西:

  • • NSIS(Nullsoft Scriptable Install System),一个老牌安装包制作工具,Pynsist幕后调用它来生成exe。
  • • 然后pip install pynsist就完事了。

接下来只需要写一个配置文件,比如叫installer.cfg,大概长这样:

[Application]
name=我的小工具
version=1.0
entry_point=myapp:main   # 告诉它从哪个函数启动
icon=myapp.ico

[Python]
version=3.6.3

[Include]
pypi_wheels = requests==2.18.4
beautifulsoup4==4.6.0
files = LICENSE
     data/

配置里指定了用Python 3.6.3,依赖的几个库(必须有wheel包,这个稍后吐槽),还有额外文件。然后终端里敲:

pynsist installer.cfg

等一两分钟,一个MyApp-1.0-installer.exe就出现在你面前了。发给朋友,双击,下一步下一步,完事。

它好在哪?又有什么坑?

👍 优点
👎 注意事项
用户无感安装,不用碰命令行
依赖的第三方库必须提供wheel(纯Python库基本没问题,带C扩展的可能翻车)
干净隔离,不影响系统Python
安装包比单个exe稍大(但能接受)
配置文件简单,学习成本低
需要额外安装NSIS(几MB的事)
支持Python 3.6以上(新版)
只能打Windows安装包,别指望跨平台

我自己的感受是:如果你要发给非技术用户,尤其是公司内勤、客户这类“对电脑只会点图标”的人,Pynsist比PyInstaller省心。因为你扔给他们的是一个标准的setup向导,他们会有“我在装正经软件”的安全感。

一个小建议,别踩我的坑

刚开始我死活打包不成功,后来发现是某个库没有wheel包——Pynsist官网明确说了,pypi_wheels里列出的必须能在PyPI上找到对应的wheel文件。解决办法有两个:要么自己把源码转成wheel(有点折腾),要么换一个替代库。纯Python项目基本一路畅通。

另外,Pynsist 2.7需要Python 3.6+,要是你还困在Python 2.7的旧项目里,可以用1.x版本,但那玩意儿已经没人维护了。听我一句劝,赶紧升上来吧。

最后说句实在的

这种工具吧,不是那种“哇好炫酷”的东西,但特别解渴。尤其是你辛辛苦苦写完一个工具,结果因为分发问题被用户嫌弃——那种憋屈,只有码农懂。Pynsist就是用来捅破这层窗户纸的。

你要是也在为打包发愁,花半小时试试它。项目地址扔这儿了,文档写得挺清楚,example里也有现成配置抄作业。

项目地址: https://github.com/takluyver/pynsist

最新文章

随机文章