MagicLock vs PyInstaller——保護 vs 打包,以及兩者並用
一份事實比較:PyInstaller 解決的是發佈,不是保護。MagicLock 產物無論去到哪裡都保持加密——而且兩個工具可以很好地組合。
PyInstaller 是把 Python 應用程式變成單一可執行檔的標準做法,使用者不用安裝 Python 就能執行。它成熟、免費,並且非常擅長這件事。它也明白地說了自己不是什麼:不是保護工具。本頁存在的原因,一是兩者經常被混為一談,二是它們實際上可以很好地搭配使用。
PyInstaller 做得好的地方
- 單一檔案 / 單一目錄發佈,直譯器一併打包——經典的「直接發個 .exe 過去」的答案。
- 廣泛的生態系支援、針對麻煩套件的 hook 機制、跨平台的成熟度。
- 免費且開源。
打包不是保護
PyInstaller 的產物是一個封存檔:應用程式的 .pyc 位元碼就裝在裡面,隨手可得的工具幾分鐘內就能把它解開回位元碼(再從位元碼還原成相當可讀的原始碼)。這不是缺陷——PyInstaller 從來不是為保守秘密而設計的,它的文件也沒有做過這種聲稱。但這意味著,打包後的應用程式提供的保護和直接發 .py 檔案大致相當。
MagicLock 的產物無論檔案去到哪裡都保持加密:在 PyInstaller 套件包裡、在隨身碟上、在客戶的備份裡。只有在你授權過的裝置上它們才會變成一個執行中的程式,且每次執行都完全離線驗證。
並排比較
| 能力 | MagicLock | PyInstaller |
|---|---|---|
| 給終端使用者的單一可執行檔 | 編譯強檔:獨立建置 | 是——正是其設計目標 |
| 打包直譯器 | 編譯強檔:是 | 是 |
| 能否從發出的檔案還原原始碼/位元碼 | 不能——加密(.pya)或每模組帶閘門的原生程式碼 | 能——封存檔可解開出 .pyc |
| 裝置綁定授權 | 內建 | ——(非其目標) |
| 模型 / 資源加密 | 按裝置信封 | 明文打包 |
| 有效期、試用、雲控開關 | 是 | — |
| 價格 | 商業收費 | 免費、開源 |
基於截至下方日期的公開文件。
一起用更好
兩個工具解決的是不同的層,而且組合起來很乾淨:
- 用
magiclock protect保護你的模組、magiclock protect-model保護你的權重——這是保護層。 - 照常用 PyInstaller 打包受保護的應用程式——這是發佈層。
打出來的套件包保留 PyInstaller 的便利;裡面的程式碼和模型保留 MagicLock 的加密與裝置綁定。或者,magiclock build --standalone 一步產出自含式的原生應用程式目錄——一道指令同時得到保護與發佈。
什麼時候單用 PyInstaller 就夠了
- 你需要的是輕鬆發佈,並且沒有任何保護或授權需求——內部工具、免費軟體、可信環境。
什麼時候該加上 MagicLock
- 當「誰都能解開它」開始成為一個商業問題的那一刻:付費軟體、按席位授權、專有模型、會到期的試用專案。
事實核對於 2026-08
產品名稱與商標歸各自所有者所有。比較基於公開文件;能力因版本與授權類型而異,請以各廠商官方資料為準。