Python 打包笔记 : 你别说 ,PyStand 确实简单易上手

一. 前言

前段时间有人推荐我使用 PyStand 打包 ,但是找了一圈,发现这方面的资料不多 ,没有一个靠谱的入门文档。

所以结合自己的使用,简单整了一个流程出来 ,便于后面使用的时候回看。

二. 工具介绍

2.1 官方简介

github.com/skywind3000...

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 的相关文件

下载 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 的包有足够的了解,才方便精简包减少大小。

最后的最后 ❤️❤️❤️👇👇👇

相关推荐
旷世奇才李先生5 分钟前
PyCharm 安装使用教程
ide·python·pycharm
程序员爱钓鱼19 分钟前
Go语言泛型-泛型约束与实践
前端·后端·go
寻月隐君19 分钟前
保姆级教程:Zsh + Oh My Zsh 终极配置,让你的 Ubuntu 终端效率倍增
linux·后端·命令行
程序员爱钓鱼21 分钟前
Go语言泛型-泛型对代码结构的优化
后端·google·go
这里有鱼汤26 分钟前
“对象”?对象你个头!——Python世界观彻底崩塌的一天
后端·python
RainbowSea29 分钟前
跨域问题(Allow CORS)解决(3 种方法)
java·spring boot·后端
尘浮72836 分钟前
60天python训练计划----day59
开发语言·python
wh393339 分钟前
使用Python将PDF转换成word、PPT
python·pdf·word
船长@Quant1 小时前
数学视频动画引擎Python库 -- Manim Voiceover 语音服务 Speech Services
python·数学·manim·动画引擎·语音旁白
sniper_fandc2 小时前
SpringBoot系列—入门
java·spring boot·后端