python脚本加密工具PyArmor的实现

 更新时间:2026年07月06日 08:29:26   作者:周小董  
PyArmor是一个Python脚本加密工具,提供安装、加密、授权绑定和打包等功能,通过pip安装后,可使用命令加密单个脚本或整个项目,下面就来详的介绍一下

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 就可以。

pip install pyarmor
# 如果需要升级
pip install --upgrade pyarmor

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

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

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

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

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

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

3. 给代码加上“有效期”

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

  • 设置天数(30天后过期)
    pyarmor gen -e 30 foo.py
    
  • 设置具体日期
    pyarmor gen -e 2026-12-31 foo.py
    

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

pyarmor cfg nts=pool.ntp.org
pyarmor gen -e 30 foo.py

4. 将脚本“绑定”到指定机器

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

  • 获取客户机器的硬件信息(在客户机器上运行):
# v8.4.6 以后的版本
python -m pyarmor.cli.hdinfo
# 旧版本
pyarmor hdinfo
  • 加密时进行绑定
# 绑定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

到此这篇关于python脚本加密工具PyArmor的实现的文章就介绍到这了,更多相关python PyArmor内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python paramiko 模块浅谈与SSH主要功能模拟解析

    Python paramiko 模块浅谈与SSH主要功能模拟解析

    这篇文章主要介绍了Python paramiko 模块详解与SSH主要功能模拟,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • python绘图subplots函数使用模板的示例代码

    python绘图subplots函数使用模板的示例代码

    这篇文章主要介绍了python绘图subplots函数使用模板的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • python+ffmpeg批量去视频开头的方法

    python+ffmpeg批量去视频开头的方法

    今天小编就为大家分享一篇python+ffmpeg批量去视频开头的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • selenium+python自动化测试之使用webdriver操作浏览器的方法

    selenium+python自动化测试之使用webdriver操作浏览器的方法

    这篇文章主要介绍了selenium+python自动化测试之使用webdriver操作浏览器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Python利用operator模块实现对象的多级排序详解

    Python利用operator模块实现对象的多级排序详解

    python中的operator模块提供了一系列的函数操作。下面这篇文章主要给大家介绍了在Python中利用operator模块实现对象的多级排序的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • Python类方法__init__和__del__构造、析构过程分析

    Python类方法__init__和__del__构造、析构过程分析

    这篇文章主要介绍了Python类方法__init__和__del__构造、析构过程分析,本文分析了什么时候构造、什么时候析构、成员变量如何处理、Python中的共享成员函数如何访问等问题,需要的朋友可以参考下
    2015-03-03
  • python 线程的五个状态

    python 线程的五个状态

    这篇文章主要介绍了python 线程的五个状态,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • Python  Django 母版和继承解析

    Python Django 母版和继承解析

    这篇文章主要介绍了Python Django 母版和继承解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 介绍一款python类型检查工具pyright(推荐)

    介绍一款python类型检查工具pyright(推荐)

    这篇文章主要介绍了介绍一款python类型检查工具pyright(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python定时任务工具之APScheduler使用方式

    Python定时任务工具之APScheduler使用方式

    APScheduler (advanceded python scheduler)是一款Python开发的定时任务工具。这篇文章主要介绍了Python定时任务工具--APScheduler的使用方式,需要的朋友可以参考下
    2019-07-07

最新评论