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

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

相关推荐
GoGeekBaird2 小时前
69天探索操作系统-第66天:为现代操作系统设计高级实时进程间通信机制
后端·操作系统
G皮T2 小时前
【Python Cookbook】文件与 IO(二)
python·i/o·io·文件·gzip·stringio·bytesio
还是鼠鼠2 小时前
单元测试-概述&入门
java·开发语言·后端·单元测试·log4j·maven
封奚泽优3 小时前
使用Python绘制节日祝福——以端午节和儿童节为例
人工智能·python·深度学习
干啥都是小小白3 小时前
话题通信之python实现
python·机器人·ros
仟濹3 小时前
「数据采集与网络爬虫(使用Python工具)」【数据分析全栈攻略:爬虫+处理+可视化+报告】
大数据·爬虫·python·数据挖掘·数据分析
水银嘻嘻4 小时前
03 APP 自动化-定位元素工具&元素定位
python·appium·自动化
蹦蹦跳跳真可爱5894 小时前
Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)
人工智能·python·深度学习·神经网络·目标检测·cnn
我最厉害。,。4 小时前
接口安全&SOAP&OpenAPI&RESTful&分类特征导入&项目联动检测
后端·restful
抽风的雨6104 小时前
【python深度学习】Day 42 Grad-CAM与Hook函数
开发语言·python·深度学习