[1366]python脚本加密工具PyArmor

文章目录

      • [1. 安装 PyArmor](#1. 安装 PyArmor)
      • [2. 快速入门:加密单个脚本](#2. 快速入门:加密单个脚本)
      • [3. 给代码加上"有效期"](#3. 给代码加上“有效期”)
      • [4. 将脚本"绑定"到指定机器](#4. 将脚本“绑定”到指定机器)
      • [5. 打包成独立可执行文件](#5. 打包成独立可执行文件)
      • [6. 常用命令与选项速查](#6. 常用命令与选项速查)

git:https://gitcode.com/gh_mirrors/py/pyarmor

https://github.com/dashingsoft/pyarmor

中文文档:https://pyarmor.readthedocs.io/zh/latest/

英文文档:https://pyarmor.readthedocs.io/en/latest/

PyArmor 是一个用来加密和保护 Python 脚本的命令行工具。下面是一份快速上手指南,涵盖了安装、基本加密、高级授权和打包等核心操作。

1. 安装 PyArmor

安装过程很简单,直接用 pip 就可以。

bash 复制代码
pip install pyarmor
# 如果需要升级
pip install --upgrade pyarmor

安装完成后,可以用 pyarmor --version 验证是否成功。

2. 快速入门:加密单个脚本

最基础的使用场景是加密一个单独的 .py 文件。假设你的脚本叫 foo.py

bash 复制代码
# 在 v8+ 版本中,推荐使用 'gen' 命令
pyarmor gen foo.py

或者使用旧版本的 obfuscate 命令。

bash 复制代码
pyarmor obfuscate foo.py
  • 运行结果 :执行后,所有加密文件和运行依赖会被放在 dist 文件夹里。
  • 关键依赖 :加密脚本本身无法独立运行,必须和 dist 目录下的运行辅助包(如 pyarmor_runtime_000000)放在一起。把整个 dist 目录发布出去,客户就能直接运行了。

3. 给代码加上"有效期"

通过设置到期时间,可以控制程序的使用期限,这在分发试用版时很有用。

  • 设置天数(30天后过期)

    bash 复制代码
    pyarmor gen -e 30 foo.py
  • 设置具体日期

    bash 复制代码
    pyarmor gen -e 2026-12-31 foo.py

默认情况下,检查的是系统本地时间。如果希望从网络时间服务器获取时间,可以先进行配置,这样用户修改电脑本地时间也无法绕过授权。

bash 复制代码
pyarmor cfg nts=pool.ntp.org
pyarmor gen -e 30 foo.py

4. 将脚本"绑定"到指定机器

通过绑定硬件信息(如MAC地址、硬盘序列号),可以让代码只能在指定的机器上运行,防止随意拷贝。

  • 获取客户机器的硬件信息(在客户机器上运行):
bash 复制代码
# v8.4.6 以后的版本
python -m pyarmor.cli.hdinfo
# 旧版本
pyarmor hdinfo
  • 加密时进行绑定
bash 复制代码
# 绑定MAC地址
pyarmor gen -b "00:16:3e:35:19:3d" foo.py

# 绑定硬盘序列号
pyarmor gen -b "HXS2000CN2A" foo.py

绑定多个MAC地址
pyarmor gen --bind 66:77:88:9a:cc:fa,f8:ff:c2:27:00:7f your_script.py

也可以同时绑定多个设备,只需多次使用 -b 选项。

  • 增强型加密选项
参数 功能描述
--enable-jit 启用动态指令生成技术
--mix-str 加密字符串常量(需正版授权)
--assert-call 防止函数被替换

完整示例:

复制代码
pyarmor gen --enable-jit --mix-str --assert-call foo.py

5. 打包成独立可执行文件

复制代码
# 打包为单文件
pyarmor gen --pack onefile -O dist_onefile main.py

# 打包为目录
pyarmor gen --pack onedir -O dist_onedir main.py

注意:非.py文件需手动复制到输出目录

  • 发布注意事项

加密后的脚本依赖运行时环境,发布结构示例:

复制代码
dist/
├── foo.py
└── pyarmor_runtime_000000/
    ├── __init__.py
    └── pyarmor_runtime.so

6. 常用命令与选项速查

  • -O, --output :指定加密文件的输出目录,默认为 dist
  • -r, --recursive :递归加密指定目录下的所有 .py 文件,用于加密整个项目或包。
  • --exclude:在递归加密时,排除某些目录或文件。
  • -d, --debug:开启调试模式,如果加密过程遇到问题,这个选项会打印更详细的错误信息,有助于排查问题。
  • -h, --help :查看任何命令的详细用法,例如 pyarmor gen -h

注意 :PyArmor 的命令和选项在不同版本间可能会有细微差异。如果在使用中遇到问题,可以随时通过 pyarmor <command> -h 查看当前版本的帮助信息。


  • 多文件/包加密‌:递归加密整个项目目录。

    加密整个包,保留目录结构

    pyarmor gen -r -O dist_output src/mypackage

  • 跨平台兼容‌:生成支持多平台的运行时(增加体积)。

    pyarmor gen --platform windows.x86_64,linux.x86_64 your_script.py