Python 教程:一键生成自解压源码文件,自动还原并打包项目

在日常开发中,我们有时会遇到这样的需求:

  • 想把一个项目源码打包成单个.py文件
  • 对方只需要运行这个.py,就能自动还原所有源码
  • 同时还能生成一个 zip 压缩包,方便分发或存档

本文将手把手教你实现一个Python 自解压源码方案,非常适合:

  • 内部源码交付
  • Demo 示例分发
  • 离线代码传输
  • 教学或工具型项目发布

✨ 最终效果

我们将得到两个东西:

  1. build_self_extract.py
    👉构建脚本,负责扫描并打包源码

  2. self_extract.py
    👉自解压脚本,运行后会:

    • 还原所有源码到目录
    • 自动生成source_code.zip

运行体验如下:

python self_extract.py

输出:

✅ 源代码已还原并压缩为 source_code.zip

🧠 实现思路

整体思路非常清晰:

  1. 遍历项目目录

  2. 按规则筛选需要的文件(.py/.json

  3. 排除虚拟环境、构建目录等

  4. 将源码内容序列化为 JSON

  5. 生成一个新的self_extract.py

  6. self_extract.py中:

    • 写回所有文件
    • 再打包成 zip

核心技巧:把“文件系统”变成 Python 变量。


📦 构建脚本:build_self_extract.py

这个脚本负责“打包一切”。

# build_self_extract.pyfrompathlibimportPathimportjson SOURCE_DIR=Path("./")OUTPUT_DIR=Path("build")OUTPUT_PY=OUTPUT_DIR/"self_extract.py"INCLUDE_EXT={".py",".json"}# 需要打包的源码类型EXCLUDE_DIRS={".git",".venv","venv","__pycache__",".history","build"}EXCLUDE_FILES={"self_extract.py","build_self_extract.py","111.py"}OUTPUT_DIR.mkdir(exist_ok=True)files_data={}forfileinSOURCE_DIR.rglob("*"):iffile.is_dir():continueiffile.suffixnotinINCLUDE_EXT:continueifany(partinEXCLUDE_DIRSforpartinfile.parts):continueiffile.nameinEXCLUDE_FILES:continuerel_path=file.relative_to(SOURCE_DIR)files_data[str(rel_path)]=file.read_text(encoding="utf-8",errors="ignore")# 生成自解压 pywithOUTPUT_PY.open("w",encoding="utf-8")asf:f.write(f'''""" 🚀 自解压源码文件 运行后将还原所有源代码并生成 source_code.zip """ from pathlib import Path import zipfile import json FILES = json.loads({json.dumps(json.dumps(files_data,ensure_ascii=False))}) BASE_DIR = Path("extracted_source") ZIP_NAME = "source_code.zip" def main(): BASE_DIR.mkdir(exist_ok=True) # 写回所有文件 for path, content in FILES.items(): file_path = BASE_DIR / path file_path.parent.mkdir(parents=True, exist_ok=True) file_path.write_text(content, encoding="utf-8", errors="replace") # 打包为 zip with zipfile.ZipFile(ZIP_NAME, "w", zipfile.ZIP_DEFLATED) as zf: for file in BASE_DIR.rglob("*"): if file.is_file(): zf.write(file, arcname=file.relative_to(BASE_DIR)) print("✅ 源代码已还原并压缩为", ZIP_NAME) if __name__ == "__main__": main() ''')print(f"✅ 已生成自解压文件:{OUTPUT_PY}")

▶️ 使用 Demo(完整流程)

1️⃣ 假设你的项目结构如下:

project/ ├── main.py ├── config.json ├── utils/ │ └── helper.py ├── build_self_extract.py

2️⃣ 执行构建脚本

python build_self_extract.py

生成结果:

build/ └── self_extract.py

3️⃣ 分发或运行self_extract.py

python self_extract.py

执行后生成:

extracted_source/ ├── main.py ├── config.json ├── utils/ │ └── helper.py source_code.zip

🎉源码完整还原 + 自动压缩完成!


⚙️ 可扩展方向(进阶玩法)

你可以在此基础上轻松扩展:

  • 🔐 给源码加密(base64 / AES)
  • 🧩 增加版本号、作者信息
  • 🖥 加 CLI 参数(如指定输出目录)
  • 📦 打包为.exe(配合 PyInstaller)
  • 🌐 通过 HTTP / API 动态释放

📝 总结

✅ 优点:

  • 单文件分发
  • 无需额外依赖
  • 代码可读、可控
  • 非常适合内部工具和 Demo

📌 适合人群:

  • Python 工具作者
  • 教学 / 培训
  • 内部源码交付
  • 自动化工程师

如果你觉得这个方案有用,欢迎点赞 + 收藏 + 关注👍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1168811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学霸同款2026 AI论文工具TOP10:本科生毕业论文必备神器

学霸同款2026 AI论文工具TOP10:本科生毕业论文必备神器 2026年学术写作工具测评:为何需要这份榜单? 随着AI技术在学术领域的深入应用,越来越多的本科生开始依赖智能写作工具提升论文效率。然而,面对市场上五花八门的AI…

怎样开发一个在线的三维建模工具?

开发一个在线三维建模工具,这是一个涵盖前端、后端、图形学等多领域的复杂工程,从核心技术选型、系统架构到具体开发步骤,尝试梳理出一个的技术路线。一、核心技术选型在线三维建模工具的核心是Web 端实时 3D 渲染 建模逻辑处理,…

6152NB10700电源分配模块

6152NB10700 电源分配模块型号: 6152NB10700 类型: 电源分配模块 适用系统: 工业自动化控制系统,例如 ABB Taylor MOD 300 系列核心作用6152NB10700 是一块 交流电源分配模块,主要用于在控制系统内部将主电源的电力分配给各个模块。它不直接处理控制逻辑…

6240BP10811逻辑控制器模块

6240BP10811 逻辑控制器模块型号: 6240BP10811 类别: 逻辑控制器 / 控制模块 用途: 工业自动化控制系统中的核心逻辑处理单元功能概要6240BP10811 是一种用于工业控制平台(如 ABB Taylor MOD 300 系列)的逻辑控制器模块,它负责系统的核心控制…

部分AI写作神器还整合了参考文献生成功能,辅助完成论文格式规范

在众多AI论文工具中,选择一款适合自己需求的平台可能令人眼花缭乱。本文将对比8款热门工具,重点聚焦降重、降AIGC率、写论文等功能。工具排名基于实测数据和用户反馈,确保客观实用性。以下是简要排行表(基于效率、准确性和易用性&…

【Java毕设全套源码+文档】基于springboot的大学生运动会管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

技术团队持续更新数据库,确保改写结果符合学术伦理与查重标准

在众多AI论文工具中,选择一款适合自己需求的平台可能令人眼花缭乱。本文将对比8款热门工具,重点聚焦降重、降AIGC率、写论文等功能。工具排名基于实测数据和用户反馈,确保客观实用性。以下是简要排行表(基于效率、准确性和易用性&…

QLoRA量化微调实战

💓 博客主页:借口的CSDN主页 ⏩ 文章专栏:《热点资讯》 QLoRA量化微调实战:资源受限环境下的高效模型优化目录QLoRA量化微调实战:资源受限环境下的高效模型优化 引言:为什么QLoRA成为微调新范式 一、QLoRA技…

【Java毕设全套源码+文档】基于web的医院病历管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

稳压补水机组控制:从图纸到实际应用的探索

稳压补水机组控制(图纸程序) 1.水箱进水电磁阀高低水位控制(液位传感器检测); 2.两台泵抽取水箱水压力上下限工作(压变检测); 3.水位,液位可设定,低位保护&am…

操作界面设计简洁直观,即使新手也能快速掌握核心功能的使用方法

在众多AI论文工具中,选择一款适合自己需求的平台可能令人眼花缭乱。本文将对比8款热门工具,重点聚焦降重、降AIGC率、写论文等功能。工具排名基于实测数据和用户反馈,确保客观实用性。以下是简要排行表(基于效率、准确性和易用性&…

【Java毕设全套源码+文档】基于springboot的地区助农平台设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

综合评估显示,这些工具在准确性和自然度方面已达到实用化水平

在众多AI论文工具中,选择一款适合自己需求的平台可能令人眼花缭乱。本文将对比8款热门工具,重点聚焦降重、降AIGC率、写论文等功能。工具排名基于实测数据和用户反馈,确保客观实用性。以下是简要排行表(基于效率、准确性和易用性&…

【Java毕设全套源码+文档】基于springboot的高校实验室教学管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

分享9款无需付费的论文查重工具,每天可无限次检测,让学术写作更加省心省力

核心工具对比速览 工具名称 查重速度 降重效果 特色功能 适用场景 aicheck 极快 重复率可降30% 专业术语保留 高重复率紧急处理 aibiye 中等 逻辑优化明显 学术表达增强 提升论文质量 askpaper 快 结构保持完整 多语言支持 外文论文降重 秒篇 极快 上下文…

部分平台不仅能实现语句重组,还能根据上下文调整词汇表达方式。

在AI论文辅助工具的筛选过程中,需结合降重、AIGC率优化及写作功能等核心需求进行综合考量。根据实际测试与用户评价数据,以下8款工具在效率、准确度及操作友好性方面表现突出(按综合性能排序): 排名 工具名称 关键优…

软件行业中的“水平”与“垂直”扩展:概念、起源与视角的深度解析

软件行业中的“水平”与“垂直”扩展:概念、起源与视角的深度解析 摘要 本文系统梳理了软件工程中"水平扩展"与"垂直扩展"这对核心概念,结合云计算实践(如Kubernetes HPA)、数据库架构拆分,追溯其…

【Java毕设全套源码+文档】基于JavaWeb的社区老人健康管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

别再自己抠提示词了!这套开源插件,带你提前进入“写提示词自由”时代

相当长一段时间,很多人一直在鼓吹提示词工程被淘汰了,误人子弟。然而,直到现在,大家还可以明显感觉到,很多场景还是需要一些相对专业的提示词的。比如说,很多朋友也问我公众号配图的提示词是什么。如何写提…

Docker Swarm 中 ingress 网络的核心用法

文章目录 实例 1:基础场景 - 部署带 ingress 发布端口的 Web 服务 操作步骤 & 命令: 关键解释: 实例 2:自定义 ingress 网络(修改默认子网/网关) 操作步骤 & 命令: 关键解释: 实例 3:ingress 网络 + 自定义 overlay 网络 操作步骤 & 命令: 关键解释: 实…