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