Python语言现在很火,被人工智能带的。
大约在35年前,Python被荷兰人创造出来,一直是小众语言,主要被科研人员使用。
20年前,Google、YouTube开始使用Python开发企业应用。15年前,大数据、机器学习兴起,让Python成了"AI官方语言"。后来,因为简单,它又成为"编程入门第一语言"。
刚开始,Python被程序员所鄙视,原因是它......它......太简单了。普通程序员写三天的代码,Python三句话就实现了。别笑,这种现象在任何行业都存在。试想你将一个料理包扔到热水里,然后完成一盘麻婆豆腐。苦学三年并持有厨师证的大厨说这跟"厨艺"根本不沾边。
Python作为全民第一语言,我6岁的女儿用它做算式。

毕竟,写出来就有答案。
很多白领以及对编程感兴趣的人,也都在使用Python解决一些身边的问题。
比如,你有一个PDF文件,里面有100页,你想删除首尾两页,因为这里面有一些版权信息。又或者你想单摘出来第2部分的内容,因为领导只关心这一部分。
那么,你可以用Python来完成这个任务。甚至你也不用了解代码,去问大模型就行,它会告诉你。

于是,你轻而易举地得到一份没有封面的PDF文件。

效果很好。
你也许写了很多这类小功能,比如:将文件夹内文件批量汇总到Excel中、将发票抬头设为文件名等等。
很多朋友觉得你写的程序很方便,他们也想用。但是,你是在代码编译器中写的,也是在开发环境中运行的。

朋友们想用就意味着他们也需要安装Python环境。这一下子门槛就提高了。虽然你感觉安装很简单,但你是一步步走来的,他们却是0基础。此时,你开始理解程序员,感受到了交流的鸿沟。
你咨询真正的程序员朋友,他们告诉你两条路线。第一,将你的功能发布成SaaS服务(Software as a Service),也就是网页版,让朋友们打开浏览器就可以使用。第二,将你的功能发布为客户端(Client),比如打包成.exe文件,让朋友们下载后双击运行。你考虑了一下,因为SaaS服务需要更多的技术栈,而且需要服务器。因此,对于内部分享的程序,客户端似乎更适合。
于是,下面我们讲一下你的python代码如何打包成.exe文件。打包的方式很多,而且也不局限于windows系统(Mac系统也可以)。我们以windows为例,旨在讲一种方向和实践。
假设我们写了一个pdf.py文件,这是处理pdf文件的代码。我们可以借助PyInstaller这个工具来打包。
首先需要通过pip安装它。打开命令行,输入以下命令:
pip install pyinstaller
然后在命令行执行 pyinstaller --onefile pdf.py
最终执行后会在dist/目录下生成一个pdf.exe文件。点击就可以运行。
也可以进行很多配置,比如设置软件的图标(需要找一个icon.ico文件)。
pyinstaller --onefile --icon=app.ico pdf.py
我利用这个方式,做了一个扫描作文纸并进行识别批阅的.exe文件。
它最终是一个独立的.exe文件,不需要安装Python环境,也不需要配置环境变量,你可以复制给任何人,双击运行即可。

将A4放入扫描仪,点击开始扫描,此时会进行扫描。扫描完成后,会自动进行识别和批阅。

你在开发环境上写的代码,基本都可以打包成客户端程序。
它并不是给你安装了Python环境,而是看看你写的代码都调用了什么模块,把用到的模块都复制出来,然后组成一个小型迷你环境。这就如同python环境是大超市,而你的程序是满足某项最小必需活动的采购。最终它成为一个.exe文件,在使用时,它会解压缩这个文件,然后找到那些模块,再执行你写的脚本。
解释完原理,聪明的你就发现了它的劣势了。
打包时,因为要将用到的库复制成小环境,所以它的体积会很大。40M起步,我的扫描程序是300M。运行时,因为要先解压缩,所以它启动起来很慢,2秒起步,我的扫描程序是5秒才打开。因为,它是在小环境中运行脚本,所以代码很容易被人家看到,容易被窃取。
优势自然也是显而易见的,如同预制菜料理包,方便、高效、稳定。因此,它适用于一些桌面工具、小型AI推理等场景。你不用太担心兼容性,考虑在我电脑上能运行,换别人电脑就不行啦?前面说了,它是组一个独立的环境,别人电脑不行,估计怎么着都不行。
Nuitka是windows下的另一个打包工具,它的打包方式更接近底层。它是将Python先编译为C语言,然后再编译成原生机器码。如此一来,执行速度快,体积也小。如果你追求性能,或者不想将源码泄露(编译成010101了,人类看不懂),可以选择这个工具。但是问题是它打包复杂、编译时间长,兼容难度高(一些依赖库需要支持C)。需要稍微专业的人来操作,否则容易出现问题。
上面讲的都是Windows环境下的Python打包工具,其实Mac系统也可以的。
cx_Freeze是一个跨平台的Python脚本打包工具,能生成运行在Windows、Mac和Linux上的可执行文件。跨平台,很有吸引力,这意味着你写的代码可以发给用Mac电脑的富豪朋友使用了。哦!好像不行,因为它打出来的包,很散,而且很大,富豪不愿意用(除非他找不到替代品)。而且,因为它不像PyInstaller那样会自动复制依赖,需要你手动选择,因此打包难度也很大。最后很可能是你自己放弃用它。
AI发展很快,而且变得越来越普及。小学编程也在部分地区得到了推广。2025年9月1日起,中国将人工智能教育纳入中小学必修课程。我想,在未来很多打工人会用Python解决一些问题,生成可执行文件,有属于自己的程序。这将大大提高他们的工作效率。