常见问题与故障排查
常见问题,以及你现在很可能正盯着看的那条报错。
"在旧电脑上好好的,换了新电脑 protect/run 就不行了"
默认情况下,加密产物绑定的是生成它的那台机器——换机器不会把这个绑定也带过去。激活新机器(下一次 protect/build 时会自动完成),然后在新机器上重新加密。如果你需要一份产物在多台你事先管不到的机器上运行,请改用便携产物——见加密你的代码。
"同一台生成产物的机器上抛出 VaultLockedError"
原因要么是这台机器的身份变化大到看起来像是另一台设备了(比如重装了系统,或者某些虚拟化/克隆场景),要么是本地凭据文件被移动或改动过。为什么 MagicLock 不会告诉你具体是哪一种,见安全模型。重新执行 magiclock activate 重新配置这台机器即可。
"不安装 SDK 能运行 .pya 吗?"
运行它需要装有 magiclock(magiclock run app.pya)——但仅此而已,不需要账号、不需要登录、不需要联网。运行你交付的应用的人只需要装了这个包,不需要在你这边有账号。
"Python 3.12 加密出的 .pya 在 3.13 上打不开"
这是预期行为——见 API 参考里的兼容性说明。请在新的解释器版本上重新执行 protect/build,而不是让一个产物跨 Python 版本使用。
"订阅到期后,已经交付出去的应用会怎样?"
新的加密会失败,直到你续费——magiclock protect/build 会报订阅相关的错误。但你已经生成并交付出去的产物照常解密、照常运行;解密永远不检查订阅状态。见账号与激活。
"怎么下线一台丢失或退役的机器?"
magiclock deactivate # 在这台机器本身执行,或者通过账号门户操作这会释放这台机器的席位,并阻止它在你账号名下继续加密任何新内容。它不会去追溯这台机器此前已经生成的产物——原因见账号与激活。
"CI 报 NotLoggedInError / NotActivatedError"
无人值守的运行环境没法走交互式浏览器登录。从账号门户铸造一个令牌,非交互式地传进去:
export MAGICLOCK_TOKEN=<来自你账号门户的令牌>
magiclock protect app.py见账号与激活。
"protect/build 在完全没有网络的情况下报错"
从你最近一次成功复核算起,有 12 小时的宽限窗口,超过这个窗口加密才会被阻止——见账号与激活里的表格。如果你从来没有成功在线激活过,就没有宽限可用;先联网成功一次即可建立起宽限窗口。
还是没解决?
给出问题的那条命令后面加上 --help 查看完整参数(例如 magiclock protect --help),或者通过账号门户的支持渠道联系我们。