MagicLock vs PyInstaller——保护 vs 打包,以及两者并用
一份事实对比:PyInstaller 解决的是分发,不是保护。MagicLock 产物无论去到哪里都保持加密——而且两个工具可以很好地组合。
PyInstaller 是把 Python 应用变成单个可执行文件的标准做法,用户不用安装 Python 就能运行。它成熟、免费,并且非常擅长这件事。它也明白地说了自己不是什么:不是保护工具。本页存在的原因,一是两者经常被混为一谈,二是它们实际上可以很好地搭配使用。
PyInstaller 做得好的地方
- 单文件 / 单目录分发,解释器一并打包——经典的"直接发个 .exe 过去"的答案。
- 广泛的生态支持、针对麻烦包的 hook 机制、跨平台的成熟度。
- 免费且开源。
打包不是保护
PyInstaller 的产物是一个归档:应用的 .pyc 字节码就装在里面,随手可得的工具几分钟内就能把它解包回字节码(再从字节码还原成相当可读的源码)。这不是缺陷——PyInstaller 从来不是为保守秘密而设计的,它的文档也没有做过这种声称。但这意味着,打包后的应用提供的保护和直接发 .py 文件大致相当。
MagicLock 的产物无论文件去到哪里都保持加密:在 PyInstaller 包里、在 U 盘上、在客户的备份里。只有在你授权过的设备上它们才会变成一个运行中的程序,且每次运行都完全离线校验。
并排对比
| 能力 | MagicLock | PyInstaller |
|---|---|---|
| 给最终用户的单文件可执行程序 | 编译强档:独立构建 | 是——正是其设计目标 |
| 打包解释器 | 编译强档:是 | 是 |
| 能否从发出的文件还原源码/字节码 | 不能——加密(.pya)或每模块带闸门的原生代码 | 能——归档可解包出 .pyc |
| 设备绑定授权 | 内置 | ——(非其目标) |
| 模型 / 资源加密 | 按设备信封 | 明文打包 |
| 有效期、试用、云控开关 | 是 | — |
| 价格 | 商业收费 | 免费、开源 |
基于截至下方日期的公开文档。
一起用更好
两个工具解决的是不同的层,而且组合起来很干净:
- 用
magiclock protect保护你的模块、magiclock protect-model保护你的权重——这是保护层。 - 照常用 PyInstaller 打包受保护的应用——这是分发层。
打出来的包保留 PyInstaller 的便利;里面的代码和模型保留 MagicLock 的加密与设备绑定。或者,magiclock build --standalone 一步产出自含的原生应用目录——一条命令同时得到保护与分发。
什么时候单用 PyInstaller 就够了
- 你需要的是轻松分发,并且没有任何保护或授权需求——内部工具、免费软件、可信环境。
什么时候该加上 MagicLock
- 当"谁都能解包"开始成为一个商业问题的那一刻:付费软件、按席位授权、专有模型、会到期的试点。
事实核对于 2026-08
产品名称与商标归各自所有者所有。对比基于公开文档;能力因版本与授权类型而异,请以各厂商官方资料为准。