You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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架构直接相关,核心原因及解决方法如下:

核心原因

  1. Pyarmor版本与Python3.11的ARM64适配问题:Pyarmor 8.3.5的试用版未针对Python3.11的ARM64架构正确编译runtime库,导致生成的pyarmor_runtime.so依赖的内部符号__PyFloat_Pack8在当前环境中无法找到。
  2. 架构不匹配:如果你的Python3.11是通过Rosetta运行的x86_64版本,也可能出现跨架构的符号不兼容问题。

解决步骤

  1. 升级Pyarmor到最新稳定版
    新版本通常会修复高版本Python和ARM架构的兼容性问题,执行升级命令:

    pip install --upgrade pyarmor
    

    升级后完全清理之前的混淆产物,重新执行混淆命令生成适配环境的脚本。

  2. 确认Python的架构类型
    运行以下命令检查当前Python是否为ARM64版本:

    python3.11 -c "import platform; print(platform.machine())"
    
    • 若输出为arm64,说明架构正确;
    • 若输出为x86_64,建议卸载当前Python,重新安装适配ARM64的版本(比如通过Homebrew安装时,确保终端未开启Rosetta转译)。
  3. 尝试更换Pyarmor版本
    如果最新版仍存在问题,可以尝试降级到Pyarmor 8.4.x及以上的稳定版本,或确认Pyarmor官方文档中支持Python3.11的最低版本。

内容的提问来源于stack exchange,提问作者Ramzan Gadamurov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:04:56