Pyarmor混淆后Python脚本无法运行:__PyFloat_Pack8符号缺失
问题:M1 Mac + Python3.11 + Pyarmor8.3.5混淆后运行报错
__PyFloat_Pack8符号找不到 环境与场景
- 系统:M1 Mac(ARM64架构)
- Python版本:3.11
- Pyarmor版本:8.3.5(试用版)
- 现象:所有混淆后的脚本运行时均出现相同符号缺失错误
相关代码与命令
混淆后的main.py
#Pyarmor 8.3.5 (trial), 000000, non-profits, 2023-09-08T17:29:25.711331 from .pyarmor_runtime_000000 import __pyarmor__ __pyarmor__(__name__, __file__, b'PY000000\x00\x03\n\x00o\r\.........)
启动脚本launch.py
from obf_project import main
执行命令
python3.11 launch.py
完整报错信息
TestPolygon/dist3/obf_project/pyarmor_runtime_000000/pyarmor_runtime.so, 0x0002): symbol not found in flat namespace '__PyFloat_Pack8' /opt/homebrew/opt/python@3.11/bin/python3 /Users/ramzangadamurov/PycharmProjects/TestPolygon/dist3/launch.py Traceback (most recent call last): File "/Users/ramzangadamurov/PycharmProjects/TestPolygon/dist3/launch.py", line 1, in <module> from obf_project import main File "/Users/ramzangadamurov/PycharmProjects/TestPolygon/dist3/obf_project/main.py", line 2, in <module> from .pyarmor_runtime_000000 import __pyarmor__ File "/Users/ramzangadamurov/PycharmProjects/TestPolygon/dist3/obf_project/pyarmor_runtime_000000/__init__.py", line 2, in <module> from .pyarmor_runtime import __pyarmor__ ImportError: dlopen(/Users/ramzangadamurov/PycharmProjects/TestPolygon/dist3/obf_project/pyarmor_runtime_000000/pyarmor_runtime.so, 0x0002): symbol not found in flat namespace '__PyFloat_Pack8' Process finished with exit code 1
分析与解决方案
这个错误确实和M1 Mac的ARM64架构直接相关,核心原因及解决方法如下:
核心原因
- Pyarmor版本与Python3.11的ARM64适配问题:Pyarmor 8.3.5的试用版未针对Python3.11的ARM64架构正确编译runtime库,导致生成的
pyarmor_runtime.so依赖的内部符号__PyFloat_Pack8在当前环境中无法找到。 - 架构不匹配:如果你的Python3.11是通过Rosetta运行的x86_64版本,也可能出现跨架构的符号不兼容问题。
解决步骤
升级Pyarmor到最新稳定版
新版本通常会修复高版本Python和ARM架构的兼容性问题,执行升级命令:pip install --upgrade pyarmor升级后完全清理之前的混淆产物,重新执行混淆命令生成适配环境的脚本。
确认Python的架构类型
运行以下命令检查当前Python是否为ARM64版本:python3.11 -c "import platform; print(platform.machine())"- 若输出为
arm64,说明架构正确; - 若输出为
x86_64,建议卸载当前Python,重新安装适配ARM64的版本(比如通过Homebrew安装时,确保终端未开启Rosetta转译)。
- 若输出为
尝试更换Pyarmor版本
如果最新版仍存在问题,可以尝试降级到Pyarmor 8.4.x及以上的稳定版本,或确认Pyarmor官方文档中支持Python3.11的最低版本。
内容的提问来源于stack exchange,提问作者Ramzan Gadamurov
相关产品推荐
相关产品推荐

