Pyarmor递归混淆失效:仅处理主文件未混淆依赖模块foo.py
解决Pyarmor递归混淆未处理依赖模块的问题
问题原因
pyarmor gen -r的-r参数是针对目录的递归处理,如果你仅指定单个文件(如main.py),Pyarmor只会混淆该文件,不会自动分析并处理它依赖的其他模块(比如foo.py),这就是运行dist目录下的混淆文件时出现ModuleNotFoundError的原因。
解决方案
针对你的最简场景,有两种直接有效的处理方式:
方式1:直接指定所有需要混淆的文件
执行命令时同时列出main.py和foo.py:
pyarmor gen main.py foo.py
执行后,dist目录会同时生成混淆后的main.py和foo.py,运行dist下的main.py即可正常调用foo.test()。
方式2:递归处理整个目录
如果后续有更多文件需要混淆,直接以当前目录为目标执行递归混淆:
pyarmor gen -r .
该命令会递归处理当前目录下所有Python文件,自动将main.py、foo.py及其他py文件都混淆到dist目录中。
验证
进入dist目录,运行混淆后的文件:
python main.py
此时应该正常输出test。
内容的提问来源于stack exchange,提问作者clang
相关产品推荐
相关产品推荐

