最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)一鍵生成自解壓源碼文件并打包項(xiàng)目

 更新時(shí)間:2026年01月18日 08:49:06   作者:weixin_46244623  
這篇文章主要為大家詳細(xì)介紹了一個(gè)Python自解壓源碼方案,可將項(xiàng)目源碼打包成單個(gè).py文件,方便分發(fā)和存檔,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

在日常開發(fā)中,我們有時(shí)會(huì)遇到這樣的需求:

  • 想把一個(gè)項(xiàng)目源碼打包成單個(gè) .py 文件
  • 對(duì)方只需要運(yùn)行這個(gè) .py,就能自動(dòng)還原所有源碼
  • 同時(shí)還能生成一個(gè) zip 壓縮包,方便分發(fā)或存檔

本文將手把手教你實(shí)現(xiàn)一個(gè) Python 自解壓源碼方案,非常適合:

  • 內(nèi)部源碼交付
  • Demo 示例分發(fā)
  • 離線代碼傳輸
  • 教學(xué)或工具型項(xiàng)目發(fā)布

最終效果

我們將得到兩個(gè)東西:

build_self_extract.py構(gòu)建腳本,負(fù)責(zé)掃描并打包源碼

self_extract.py自解壓腳本,運(yùn)行后會(huì):

  • 還原所有源碼到目錄
  • 自動(dòng)生成 source_code.zip

運(yùn)行體驗(yàn)如下:

python self_extract.py

輸出:

? 源代碼已還原并壓縮為 source_code.zip

實(shí)現(xiàn)思路

整體思路非常清晰:

遍歷項(xiàng)目目錄

按規(guī)則篩選需要的文件(.py / .json

排除虛擬環(huán)境、構(gòu)建目錄等

將源碼內(nèi)容序列化為 JSON

生成一個(gè)新的 self_extract.py

self_extract.py 中:

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

核心技巧:把“文件系統(tǒng)”變成 Python 變量。

構(gòu)建腳本:build_self_extract.py

這個(gè)腳本負(fù)責(zé)“打包一切”。

# build_self_extract.py
from pathlib import Path
import json

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 = {}

for file in SOURCE_DIR.rglob("*"):
    if file.is_dir():
        continue

    if file.suffix not in INCLUDE_EXT:
        continue

    if any(part in EXCLUDE_DIRS for part in file.parts):
        continue

    if file.name in EXCLUDE_FILES:
        continue

    rel_path = file.relative_to(SOURCE_DIR)
    files_data[str(rel_path)] = file.read_text(
        encoding="utf-8", errors="ignore"
    )

# 生成自解壓 py
with OUTPUT_PY.open("w", encoding="utf-8") as f:
    f.write(
        f'''"""
?? 自解壓源碼文件
運(yùn)行后將還原所有源代碼并生成 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.假設(shè)你的項(xiàng)目結(jié)構(gòu)如下

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

2.執(zhí)行構(gòu)建腳本

python build_self_extract.py

生成結(jié)果:

build/
└── self_extract.py

3.分發(fā)或運(yùn)行self_extract.py

python self_extract.py

執(zhí)行后生成:

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

source_code.zip

源碼完整還原 + 自動(dòng)壓縮完成!

可擴(kuò)展方向(進(jìn)階玩法)

你可以在此基礎(chǔ)上輕松擴(kuò)展:

  • 給源碼加密(base64 / AES)
  • 增加版本號(hào)、作者信息
  • 加 CLI 參數(shù)(如指定輸出目錄)
  • 打包為 .exe(配合 PyInstaller)
  • 通過 HTTP / API 動(dòng)態(tài)釋放

總結(jié)

優(yōu)點(diǎn):

  • 單文件分發(fā)
  • 無需額外依賴
  • 代碼可讀、可控
  • 非常適合內(nèi)部工具和 Demo

適合人群:

  • Python 工具作者
  • 教學(xué) / 培訓(xùn)
  • 內(nèi)部源碼交付
  • 自動(dòng)化工程師

到此這篇關(guān)于Python實(shí)現(xiàn)一鍵生成自解壓源碼文件并打包項(xiàng)目的文章就介紹到這了,更多相關(guān)Python生成自解壓源碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python MNIST手寫體識(shí)別詳解與試練

    Python MNIST手寫體識(shí)別詳解與試練

    MNIST(官方網(wǎng)站)是非常有名的手寫體數(shù)字識(shí)別數(shù)據(jù)集,在Tensorflow的官方網(wǎng)站里,第一個(gè)就拿它來做實(shí)戰(zhàn)講解,咱們也以此作為開始的項(xiàng)目
    2021-11-11
  • 淺談python在提示符下使用open打開文件失敗的原因及解決方法

    淺談python在提示符下使用open打開文件失敗的原因及解決方法

    今天小編就為大家分享一篇淺談python在提示符下使用open打開文件失敗的原因及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python實(shí)現(xiàn)矩陣乘法

    python實(shí)現(xiàn)矩陣乘法

    這篇文章主要介紹了python實(shí)現(xiàn)矩陣乘法,矩陣相乘需要前面矩陣的行數(shù)與后面矩陣的列數(shù)相同方可相乘,下面來看看python代碼的具體實(shí)現(xiàn)吧
    2022-01-01
  • 跟老齊學(xué)Python之玩轉(zhuǎn)字符串(3)

    跟老齊學(xué)Python之玩轉(zhuǎn)字符串(3)

    字符串是一個(gè)很長(zhǎng)的話題,縱然現(xiàn)在開始第三部分,但是也不能完全說盡。因?yàn)樽址亲匀徽Z(yǔ)言中最復(fù)雜的東西,也是承載功能最多的,計(jì)算機(jī)高級(jí)語(yǔ)言編程,要解決自然語(yǔ)言中的問題,讓自然語(yǔ)言中完成的事情在計(jì)算機(jī)上完成,所以,也不得不有更多的話題。
    2014-09-09
  • 解決python使用open打開文件中文亂碼的問題

    解決python使用open打開文件中文亂碼的問題

    下面小編就為大家分享一篇解決python使用open打開文件中文亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 使用pandas的box_plot去除異常值

    使用pandas的box_plot去除異常值

    今天小編就為大家分享一篇使用pandas的box_plot去除異常值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Pandas index操作索引的實(shí)現(xiàn)

    Pandas index操作索引的實(shí)現(xiàn)

    Pandas中的索引index用于選擇特定的行數(shù)和列數(shù),加快數(shù)據(jù)訪問速度,本文就來介紹一下index操作索引,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • python中的import絕對(duì)導(dǎo)入與相對(duì)導(dǎo)入詳解

    python中的import絕對(duì)導(dǎo)入與相對(duì)導(dǎo)入詳解

    這篇文章主要介紹了python中的import絕對(duì)導(dǎo)入與相對(duì)導(dǎo)入詳解,在使用python做一些簡(jiǎn)單項(xiàng)目時(shí),import一般不會(huì)出現(xiàn)問題,但項(xiàng)目結(jié)構(gòu)復(fù)雜時(shí),import可能發(fā)生報(bào)錯(cuò),需要的朋友可以參考下
    2023-11-11
  • django 自定義過濾器的實(shí)現(xiàn)

    django 自定義過濾器的實(shí)現(xiàn)

    這篇文章主要介紹了django 自定義過濾器的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • Python標(biāo)準(zhǔn)庫(kù)argparse解析命令行參數(shù)使用詳細(xì)介紹

    Python標(biāo)準(zhǔn)庫(kù)argparse解析命令行參數(shù)使用詳細(xì)介紹

    本文詳細(xì)介紹了argparse模塊在Python中的應(yīng)用,包括action參數(shù)的使用方法、互斥參數(shù)的創(chuàng)建以及子命令的處理,通過示例代碼展示了如何為命令行工具添加子命令并綁定處理函數(shù),簡(jiǎn)化復(fù)雜邏輯,感興趣的朋友跟隨小編一起看看吧
    2026-06-06

最新評(píng)論

广德县| 隆林| 松溪县| 花垣县| 扶风县| 崇仁县| 汾阳市| 乡城县| 昌邑市| 南江县| 合作市| 凤凰县| 会同县| 萨嘎县| 鸡西市| 翁牛特旗| 银川市| 泗洪县| 兴义市| 叶城县| 富蕴县| 绿春县| 景宁| 建湖县| 胶州市| 宣化县| 通州市| 江永县| 义马市| 绩溪县| 虞城县| 磐石市| 盱眙县| 苗栗县| 谢通门县| 滦平县| 迁西县| 旬阳县| 邯郸市| 云安县| 伊川县|