一. 前言
前段时间有人推荐我使用 PyStand 打包 ,但是找了一圈,发现这方面的资料不多 ,没有一个靠谱的入门文档。
所以结合自己的使用,简单整了一个流程出来 ,便于后面使用的时候回看。
二. 工具介绍
2.1 官方简介
PyStand 是一个用于将 Python 应用程序打包为独立可执行文件的工具,旨在简化 Python 应用程序的发布过程。
PyStand 的目标是更加轻量化
和易用
,同时提供高度自定义的配置选项。
- 轻量化: PyStand 的设计理念是简单、高效,适合小型和中型项目。
- 独立运行环境: 打包后的可执行文件包含一个独立的 Python 运行时环境,无需用户手动安装 Python。
- 多平台支持: PyStand 支持在 Windows、Linux 和 macOS 上打包和运行。
- 简化依赖处理: 它会自动分析项目依赖并将所需模块打包到最终的可执行文件中。
- 高可定制性: 允许开发者通过配置文件自定义打包选项,例如添加资源文件、设置启动脚本等。
多的不说了 ,直接看流程 : 👇 👇👇
三. 基础使用过程
前置知识点 :
- Python Embeddable : (解决运行环境的问题 )
- 该工具是一个轻量级的Python发行版 ,主要用于嵌入式场景。
- 可以把 Python解释器嵌入到其他应用程序中。
- 也就是说 ,这是一个精简的运行环境
- SitePackages : (解决依赖的问题 )
- SitePackages是Python安装目录下的一个文件夹,用于存放系统或用户安装的第三方Python包
- 打包运行环境的时候 ,需要把依赖包也打包进去
java
// 步骤一 : 需要准备好 PyStand 的相关文件 (这里可以直接去 Git 上面拉 Release 包)
// --- 详情见 3.1
// --- 下载好了之后 ,就是你的软件执行目录了
// 步骤二 : 准备好 Python Embeddable 包 (也是去官方下载即可)
// --- 详情见 3.1
// --- 放入 Runtime , 如果上面下载的是聚合版 ,这里不需要处理
// 步骤三 : 准备好 Site Package 的依赖包
- 如果是类似于 anaconda 的运行环境 ,可以直接去环境里面抽包
3.1 构建项目根路径
PyStand 的相关文件
- 先下载 exe 文件 : @ github.com/skywind3000...
下载 Python Embeddable 包
自行去官网下载对应的版本 @ www.python.org/downloads/r...
抽取 Site Package 依赖包
3.2 载入一个最基本的可执行项目
整个过程中主要涉及到这些步骤 :
java
// S1 : 首先准备好项目执行文件
这里可以把整个 Python 项目文件拖进去 ,其中要有一个 main.py ,作为项目的启动文件
// S2 : 修改 PyStand.int
把 main.py 的整个内容复杂到 PyStand.int 项目里面
// S3 : 双击 PyStand.exe 运行
// S4 : 打包成 zip/rar 压缩文件 ,发布就行
哈哈 ,是不是特别简单,如果项目简单的话 ,这里就一步到位了!!
3.3 其中一些注意的点
如果包的依赖不对 ,会直接闪退
注意 ,如果闪退的话 ,就从命令行里面运行 exe ,就可以看到执行失败的问题了
PyStand.exe 需要和 PyStand.int 对应
这里注意一下 ,.int 查找是按照执行名称来的 ,也就是main.int 时 ,要把 exe 改为 main.exe
3.4 这个过程中遗留下来的问题
包文件还是太大了
- 项目解压后 ,整体大小在 100M+
- 压缩成 rar 发布后 ,整体大小在 50M+
- 对于 纯 Python 应用 ,没有依赖包的情况下 ,能做到 10M-20M
- 但是对于一个复杂的项目 ,可能就500M 往上了
代码是明文的
按照上面的流程不难发现 ,代码是明文 .py 文件
放在项目里面的 ,这里可就不是 .pyc 这里执行文件了。
所以对于代码敏感的情况下 ,需要对代码进行加密处理。
这里比较简单的方式就是进行代码混淆
,方案很多 ,我这里就不深入了
四. 上强度 - 如何减少压缩包大小
整个项目打包里面 ,最复杂的一点就是精简 Python 依赖包的大小 ,给大家看一个大项目 :
- 项目不复杂 ,十来个页面
- 打包前有600M+ , 打包后 ,还是占了整整 200M + , 主要原因就是 site-packages 太大了 , 有 134 个项目
- 主要是 PyQT6 里面集成了一个 Web 浏览器引擎 , 占了 100M
对 site-packages 进行修剪
像这样 ,直接把里面用不到的依赖删除就行 ,只要项目能运行 ,就没问题.
总结
这篇文章主要针对新手开荒的时候 ,如何快速打包发布一个项目 , 后面用到了会把一些复杂的功能也记录过来。
但是对于这个工具 ,上手容易 ,想精化同样不简单。需要对 Python 的包有足够的了解,才方便精简包减少大小。
最后的最后 ❤️❤️❤️👇👇👇
- 👈 欢迎关注 ,超200篇优质文章,未来持续高质量输出 🎉🎉
- 🔥🔥🔥 系列文章集合,高并发,源码应有尽有 👍👍
- 走过路过不要错过 ,知识无价还不收钱 ❗❗