You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pyarmor混淆指定模块并在未混淆的main.py中导入?

只混淆指定模块(module)的Pyarmor操作方案

1. 先确认Pyarmor已安装

如果还没装,执行:

pip install pyarmor

2. 单独混淆module目录

在项目根目录(和main.py同级的位置)运行以下命令,只混淆module下的所有Python文件:

pyarmor obfuscate --output dist/module module/*.py
  • --output dist/module 指定混淆后的文件输出到dist/module目录,避免覆盖原源码
  • module/*.py 明确指定要混淆的是module下的所有py文件(包括__init__.py)

执行完后,dist/module里会生成混淆后的模块文件,同时包含Pyarmor运行所需的__pyarmor__目录。

3. 让main.py能导入混淆后的模块

有两种简单的实现方式:

  • 方式一:替换原模块
    备份好原module目录后,把dist/module里的所有内容复制到项目根目录,替换原来的module文件夹。之后main.py的导入语句不需要修改,直接就能用混淆后的模块。

  • 方式二:修改导入路径
    不想替换原模块的话,在main.py的最开头添加以下代码,让Python优先从dist目录加载混淆后的module:

    import sys
    sys.path.insert(0, './dist')
    

    原module目录可以保留作为源码,不影响运行。

4. 测试验证

直接运行main.py:

python main.py

如果能正常调用module里的函数,说明混淆和导入都没问题。

额外注意点

  • 发布程序时,需要把dist/module下的所有文件(包括__pyarmor__目录)一起打包,Pyarmor的运行时依赖这个目录里的文件。
  • 如果module内部有相对导入逻辑,混淆后路径结构不变,不需要额外调整。
  • 可以通过添加参数调整混淆强度,比如--obf-code 3(最高等级混淆),或者--with-assert保留断言语句,具体可以参考Pyarmor的命令行参数说明。

内容的提问来源于stack exchange,提问作者Uwe.Schneider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:25:34