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

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.jsqmd.com/news/253528/

相关文章:

  • 怎样开发一个在线的三维建模工具?
  • 6152NB10700电源分配模块
  • 部分AI写作神器还整合了参考文献生成功能,辅助完成论文格式规范
  • 6240BP10811逻辑控制器模块
  • 【Java毕设全套源码+文档】基于springboot的大学生运动会管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 技术团队持续更新数据库,确保改写结果符合学术伦理与查重标准
  • QLoRA量化微调实战
  • 【Java毕设全套源码+文档】基于web的医院病历管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 操作界面设计简洁直观,即使新手也能快速掌握核心功能的使用方法
  • 稳压补水机组控制:从图纸到实际应用的探索
  • 【Java毕设全套源码+文档】基于springboot的地区助农平台设计与实现(丰富项目+远程调试+讲解+定制)
  • 综合评估显示,这些工具在准确性和自然度方面已达到实用化水平
  • 【Java毕设全套源码+文档】基于springboot的高校实验室教学管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 分享9款无需付费的论文查重工具,每天可无限次检测,让学术写作更加省心省力
  • 部分平台不仅能实现语句重组,还能根据上下文调整词汇表达方式。
  • 软件行业中的“水平”与“垂直”扩展:概念、起源与视角的深度解析
  • 别再自己抠提示词了!这套开源插件,带你提前进入“写提示词自由”时代
  • 【Java毕设全套源码+文档】基于JavaWeb的社区老人健康管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • Docker Swarm 中 ingress 网络的核心用法
  • 【Java毕设源码分享】基于springboot+vue的高校实验室教学管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • GitHub热榜----上帝视角玩转未来!MiroFish:基于群体智能的万物预测引擎
  • 【Java毕设源码分享】基于springboot+vue的高校大学生运动会管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • AD25 — 线宽规则后不起效果?
  • EasyGBS打造能源矿山全场景智能监控模式
  • 【Java毕设源码分享】基于springboot+web的诊所病历管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • EasyGBS鱼塘养殖的高清视频监控技术应用实践
  • 【Java毕设源码分享】基于springboot+vue的地区助农平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 工业AI平台是什么?它如何帮助企业实现智能化转型?
  • 救命!2025CTF 备赛不用瞎找了!工具包 + 比赛时间 + 靶场 + 解题思路全整理好
  • 收藏!2026就业突围必看:大模型专业红利及全套学习指南