文章目录
-
-
- [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天后过期) :
bashpyarmor gen -e 30 foo.py -
设置具体日期 :
bashpyarmor 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