Pyarmor 安装全解:从 PyPI 快速安装到离线设备与 Termux 环境部署 开发工具应用安全【免费下载链接】pyarmorA tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.项目地址https://gitcode.com/gh_mirrors/py/pyarmor点击查看免费下载本文基于 Pyarmor 官方文档中的安装章节installation.rst整理覆盖从最普通的pip install pyarmor到跨平台混淆所需的pyarmor.cli.core.*系列扩展包、离线设备分步安装、Termux 下修复动态库依赖直至彻底卸载的完整流程并结合仓库源码说明各安装入口与命令背后的实际实现帮助读者在任何环境下都能正确搭建 Pyarmor 运行环境。安装前提Python 与共享 C 运行时库Pyarmor 的运行依赖两样东西Python 解释器以及 C 运行时库glibc 或 musl。由于 Pyarmor 混淆脚本时会注入 C 扩展如pytransform3、pyarmor_runtime这些扩展在运行时必须能链接到 Python 的共享运行时库因此安装前建议先确认环境Linux按需安装共享 Python 运行时库。例如为 Python 3.10 安装$ apt install libpython3.10macOS (Darwin)确认文件rpath/lib/libpythonX.Y.dylib存在X.Y为 Python 的主版本号与次版本号如rpath/lib/libpython3.10.dylib。其中rpath可能是以下之一executable_path/..loader_path/../System/Library/Frameworks/Python.framework/Versions/3.10/Library/Frameworks/Python.framework/Versions/3.10若该文件不存在可安装相应软件包、重新以 enable shared 选项构建 Python或使用install_name_tool适配当前 Python 安装更多细节可参考仓库中的 questions.rst。从源码结构看bootstrap.py 中实现了针对 Darwin 平台的自动探测逻辑_fixup_darwin_rpath会通过otool -L解析当前解释器依赖定位 CPython 共享库再用install_name_tool -change修正扩展库的引用并以codesign重签名见 bootstrap.py。这说明安装文档中强调的“共享库是否存在”正是 Pyarmor 内部修复流程的前置条件。另外从main.py 中的版本检查逻辑可以确认Pyarmor 8/9 系列要求 Python 3.7~3.15 区间3 y 16更低的 Python 版本会在启动时直接抛出CliError。从 PyPI 安装Pyarmor 的发行包发布在 PyPI 上推荐安装工具是pip所有现代 Python 版本自带。在 Linux 或 macOS 终端中执行$ pip install pyarmor在 Windows 上打开命令提示符Winr输入cmd执行相同命令C:\ pip install pyarmor安装完成后在命令行输入pyarmor --version若一切正常会看到刚安装的 Pyarmor 版本号当前仓库版本为 9.2.7见 config.py。跨平台混淆所需的扩展包如果需要在 A 平台生成用于 B 平台运行的混淆脚本需要额外安装对应平台的预编译运行时包$ pip install pyarmor.cli.core.windows $ pip install pyarmor.cli.core.themida $ pip install pyarmor.cli.core.linux $ pip install pyarmor.cli.core.darwin $ pip install pyarmor.cli.core.freebsd $ pip install pyarmor.cli.core.android $ pip install pyarmor.cli.core.alpine并非所有平台组合都受支持完整的 Python 版本与 OS/架构支持矩阵请参考 environments.rst。从源码看这一机制并非文档空谈执行pyarmor gen --platform ...时cmd_gen 调用链 中的check_gen_context会比对目标平台与本机平台若不一致则调用check_prebuilt_runtime_library。该函数位于 bootstrap.py它会扫描pyarmor/cli/core目录下已存在的平台子包对缺失的平台自动执行pip install pyarmor.cli.core.platform~corever。也就是说即使你忘记手动安装某个平台的包命令也可能尝试自动补装但离线环境或自动补装失败时就必须按上述命令手动安装。两个实用安装技巧精简安装如果只使用 Pyarmor 8 的新特性安装pyarmor.cli而不是pyarmor可显著减小下载体积$ pip install pyarmor.cli指定旧版本需要旧版本时直接指定精确版本号$ pip install pyarmor8.5.12安装后得到的命令安装pyarmor后系统中会注册以下可执行命令完整入口定义见 setup.py命令用途入口pyarmor主命令完成混淆、注册、配置等全部工作详见 man.rstpyarmor.cli.__main__:mainpyarmor-7调用旧版bug fixed 的Pyarmor 7.x 命令供存量项目兼容pyarmor.pyarmor:main_entrypyarmor-auth用于 Group License 支持不限数量的 Docker 容器pyarmor.cli.docker:main值得注意的是仓库 setup.py 中还注册了pyarmor-8入口pyarmor.pyarmor:main_entry_8它是面向旧 Pyarmor 8.x 行为的兼容入口。关于pyarmor-auth从 docker.py 的实现可以确认其工作方式它在本机启动一个监听0.0.0.0:29092的 socket 服务Docker 容器内的混淆脚本在运行时通过该服务完成 Group License 鉴权从而实现“一台宿主机注册、容器数量不限”的授权模型。另外pyarmor命令本质上等价于$ python -m pyarmor.cli这一点在 setup.py 的console_scripts入口与main.py 的main_entry定义中可以相互印证——两者最终都走同一个main_entry(argv)解析与执行流程。在虚拟环境中安装通过pip安装 Pyarmor 时推荐使用虚拟环境把安装内容与系统包隔离避免需要管理员权限。在.venv目录创建虚拟环境$ python -m venv .venv激活后即可在其中执行前文的pip install pyarmor后续所有 Pyarmor 操作都在该环境中进行。从源码安装已弃用早期可以通过克隆 Git 仓库并本地安装的方式部署$ git clone Pyarmor Git 仓库 $ cd pyarmor $ pip install .也可以下载仓库的tar.gz/zip快照解压后按相同方式用pip安装。但文档明确标注自 8.2.9 起该方法被弃用deprecated不建议使用——直接pip install .安装的包可能无法正常工作。仓库中的 setup.py 显示其install_requires为pyarmor.cli.core~8.1.2且package_data中还引用了platforms/下的预编译库文件这些内容在公开源码快照中并不完整这正是源码安装不可靠的原因。请一律改用 PyPI 安装。离线设备安装所有 Pyarmor 包都发布在 PyPI可以在线下载后拷贝到离线设备。安装顺序是先装pyarmor.cli.core再装pyarmor或pyarmor.cli。例如在 LinuxPython 3.10上离线安装 Pyarmor 8.2.9$ pip install pyarmor.cli.core-3.2.9-cp310-none-manylinux1_x86_64.whl $ pip install pyarmor-8.2.9.zipAndroid / FreeBSD需要源码发行版在 Android 或 FreeBSD 上pyarmor.cli.core没有平台 wheel应安装源码发行版并额外安装pyarmor.cli.core.android或pyarmor.cli.core.freebsd。例如在 AndroidPython 3.10上离线安装$ pip install pyarmor.cli.core-3.2.9.zip $ pip install pyarmor.cli.core.android-3.2.9-cp310-none-any.whl $ pip install pyarmor-8.2.9.zip特殊 Linux 架构glibc 或 musl 扩展包对于ppc64le、mips32el、mips64el、riscv64、loongarch64这类架构还需要安装pyarmor.cli.core.linuxglibc或pyarmor.cli.core.alpinemusl。例如$ pip install pyarmor.cli.core-8.5.9.zip $ pip install pyarmor.cli.core.linux-6.5.2-cp310-none-any.whl $ pip install pyarmor.cli-8.5.9.zip离线场景下的跨平台混淆如果离线设备还要做跨平台混淆就同样要按目标平台安装对应的扩展包pyarmor.cli.core.freebsdpyarmor.cli.core.androidpyarmor.cli.core.windowspyarmor.cli.core.themidapyarmor.cli.core.linuxpyarmor.cli.core.alpinepyarmor.cli.core.darwin例如需要 Themida 保护时安装$ pip install pyarmor.cli.themida-3.2.9-cp310-none-any.whl在 Linux 上生成 Windows 目标时安装 windows 包$ pip install pyarmor.cli.windows-3.2.9-cp310-none-any.whl若离线设备只使用 Pyarmor 8 特性推荐安装pyarmor.cli代替pyarmor前者文件体积显著更小$ pip install pyarmor.cli-8.2.9.zipTermux 环境修复在 Android 的 Termux 环境中安装完成后还需要用patchelf给扩展库补上对 Python 共享库的依赖。例如Python 3.11$ patchelf --add-needed libpython3.11.so.0.1 /data/data/com.termux/files/usr/lib/python3.11/site-packages/pyarmor/cli/core/android/aarch64/pytransform3.so $ patchelf --add-needed libpython3.11.so.0.1 /data/data/com.termux/files/usr/lib/python3.11/site-packages/pyarmor/cli/core/android/aarch64/pyarmor_runtime.so有时还需要设置rpath$ patchelf --set-rpath /data/data/com.termux/files/usr/lib /path/to/{pytransform3,pyarmor_runtime}.so否则运行时会报dlopen failed: cannot locate symbol PyFloat_Type——这正是“扩展库找不到 Python 共享符号”的典型表现与安装前提一节中 Linux/macOS 强调共享运行时库是同一个问题的不同平台变体。从 Python 脚本调用 Pyarmor除了直接敲命令行也可以在 Python 脚本中编程式调用 Pyarmor。创建一个tool.py手动传入参数列表from pyarmor.cli.__main__ import main_entry args [gen, -O, dist, --platform, linux.x86_64,windows.x86_64, foo.py] main_entry(args)然后用 Python 解释器运行$ python tool.py它等价于命令行$ pyarmor gen -O dist --platform linux.x86_64,windows.x86_64 foo.py从源码可以确认这一调用的内部路径main_entry 会先创建Commander与argparse解析器构造Contextget_home_paths 中默认 home 为~/.pyarmor也可通过环境变量PYARMOR_HOME覆盖再分发到cmd_gen等子命令处理函数。因此脚本调用方式与 CLI 完全一致适合把混淆步骤嵌入构建流水线。--platform参数支持逗号分隔多平台这一点在 format_gen_args 中可以看到按逗号切分并合并的实现。彻底卸载执行以下命令可完成干净卸载$ pip uninstall pyarmor $ pip uninstall pyarmor.cli.core $ pip uninstall pyarmor.cli.runtime $ pip uninstall pyarmor.cli.core.windows $ pip uninstall pyarmor.cli.core.themida $ pip uninstall pyarmor.cli.core.linux $ pip uninstall pyarmor.cli.core.darwin $ pip uninstall pyarmor.cli.core.freebsd $ pip uninstall pyarmor.cli.core.android $ pip uninstall pyarmor.cli.core.alpine $ rm -rf ~/.pyarmor $ rm -rf ./.pyarmor其中~表示当前登录用户的主目录不同登录用户下该路径可能不同。$HOME是环境变量可通过查看HOME环境变量获取真实路径。结合 environments.rst 对配置文件层的说明卸载时需要清理的两个目录各有分工~/.pyarmor存放全局配置与注册信息源码中对应Context.home_path见 context.py而项目下的./.pyarmor存放本地配置Context.local_path如./.pyarmor/config与私有规则文件二者都删除才算彻底。小结Pyarmor 的安装遵循“核心包 平台扩展包”的分层结构pyarmor或精简的pyarmor.cli提供命令入口pyarmor.cli.core及其平台子包提供各 OS/架构的预编译运行时pyarmor.cli.core.themida等则负责特殊保护能力。日常环境pip install pyarmor即可跨平台混淆、离线设备、Termux 等特殊场景按本文对应小节补齐包与依赖即可。完整命令选项与环境变量说明可继续查阅 man.rst 与 environments.rst。赞分享开发工具应用安全【免费下载链接】pyarmorA tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.项目地址https://gitcode.com/gh_mirrors/py/pyarmor点击查看免费下载上一篇Lynx-Stack国际化方案多语言支持的实现与最佳实践下一篇Obsidian Web Clipper实战高效构建个人知识库的网页剪藏方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考