当前位置: 首页 > ai >正文

pyinstaller

1、PyInstaller 打包原理

1、把 Python 解释器和所需的库打包进去。
2、把 .py 文件编译成 .pyc(字节码)。
3、在 exe 内部有一个类似压缩包的结构,存放这些 .pyc 文件。
4、exe 启动时,会解压并运行这些 .pyc 文件。
5、所以 exe 中其实是有 Python 字节码的。

2、还原py源码

提取 exe 内部的 pyc 文件

pyinstxtractor.py
https://github.com/NShisan/pyinstxtractor

反编译 pyc 文件

使用 Python 的反编译工具,如:

uncompyle6
https://github.com/rocky/python-uncompyle6
decompyle3
https://github.com/rocky/python-decompile3

PyInstaller打包 exe 的结构

引导程序(Bootloader)

这是一个用 C 写的可执行程序,占用 exe 的最前端。
1、初始化 Python 解释器
2、解压内置的资源
3、加载依赖库
4、最后运行 Python 脚本(字节码)

PYZ 压缩包

这个是一个内部 zip 格式文件,里面包含所有 Python .pyc 文件和依赖模块。本质上就是一个字节码包。

依赖的 DLL / 动态库

Python 运行时库(比如 python39.dll)以及你程序依赖的 C 扩展库。

pyinstaller 打包exe的启动流程

Bootloader 启动

先在内存里创建一个临时环境。

解压内置文件

PyInstaller 默认不会把文件写在打包的 exe 同目录,而是写到 临时目录:
Windows: %TEMP%_MEIxxxxxx
Linux/macOS: /tmp/_MEIxxxxxx/
这里 _MEIxxxxxx 是 PyInstaller 自动生成的临时文件夹名。
exe 会把 PYZ 包解压到这个目录,包括 .pyc 文件、依赖 DLL、资源文件等。

运行 Python 字节码

Bootloader 会调用 Python 解释器直接执行 .pyc 文件。

http://www.xdnf.cn/news/20066.html

相关文章:

  • SQL decode() 函数
  • Python爬虫实战:研究Axes Grid模块,构建旅游平台酒店数据采集和分析系统
  • VNC连接服务器实现远程桌面-针对官方给的链接已经失效问题
  • Linux 综合练习
  • LTE CA和NR CA的区别和联系
  • 第七章 Cesium 3D 粒子烟花效果案例解析:从原理到完整代码
  • CSS Position 属性
  • Pspice仿真电路:(三十六)变压器仿真
  • 本科论文抽检档案整理:Python批量文件查找、打包、改名
  • 【uniapp】打包为h5在保留头部标题的同时配置网站标题不跟随页面路由更新
  • CVPR 2025|无类别词汇的视觉-语言模型少样本学习
  • RikkaHub:安卓原生AI聊天新体验
  • 【设计模式】UML 基础教程总结(软件设计师考试重点)
  • 十一、标准化和软件知识产权基础知识
  • 认识 Flutter
  • 告别 OpenAI SDK:如何使用 Python requests 库调用大模型 API(例如百度的ernie-4.5-turbo)
  • 【Qt开发】按钮类控件(三)-> QCheckBox
  • 【完整源码+数据集+部署教程】手袋类型检测系统源码和数据集:改进yolo11-AFPN-P345
  • 前端开发,同源策略
  • 【Linux】Linux进程状态和僵尸进程:一篇看懂“进程在忙啥”
  • 基于OpenGL封装摄像机类:视图矩阵与透视矩阵的实现
  • 如何下载B站视频,去水印,翻译字幕
  • .Net程序员就业现状以及学习路线图(四)
  • 创建线程有哪几种方式
  • 【数字孪生核心技术】数字孪生有哪些核心技术?
  • Kubernetes(四):Service
  • HyperWorks许可服务器设置
  • 企业微信AI怎么用?食品集团靠它砍掉50%低效操作,答案就是选对企业微信服务商
  • ZeroMQ 编译 项目使用流程文档
  • Android 生命周期函数调用原理