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

macOS Monterey下Mythril分析智能合约plyvel报错咨询

问题描述

执行myth analyze <file>命令,使用Mythril v0.23.3分析智能合约时程序抛出异常退出,运行环境为2014年末款Mac Mini、macOS Monterey、Python 3.9,完整报错信息如下:

JX:Attack juanxavier$ myth analyze Counter.sol
    Traceback (most recent call last):
      File "/Library/Frameworks/Python.framework/Versions/3.9/bin/myth", line 33, in <module>
        sys.exit(load_entry_point('mythril==0.23.3', 'console_scripts', 'myth')())
      File "/Library/Frameworks/Python.framework/Versions/3.9/bin/myth", line 25, in importlib_load_entry_point
        return next(matches).load()
      File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/metadata.py", line 86, in load
        module = import_module(match.group('module'))
      File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
      File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 850, in exec_module
      File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
      File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/interfaces/cli.py", line 26, in <module>
        from mythril.mythril import (
      File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/mythril/__init__.py", line 3, in <module>
        from .mythril_config import MythrilConfig
      File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/mythril/mythril_config.py", line 14, in <module>
        from mythril.ethereum.interface.leveldb.client import EthLevelDB
      File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/ethereum/interface/leveldb/client.py", line 13, in <module>
        from mythril.ethereum.interface.leveldb.eth_db import ETH_DB
      File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/mythril/ethereum/interface/leveldb/eth_db.py", line 3, in <module>
        import plyvel
      File "/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/plyvel/__init__.py", line 6, in <module>
        from ._plyvel import (  # noqa
    ImportError: dlopen(/Users/juanxavier/Library/Python/3.9/lib/python/site-packages/plyvel/_plyvel.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '__ZTIN7leveldb10ComparatorE'
报错原因

报错触发点是Python加载plyvel动态库时找不到LevelDB对应的符号__ZTIN7leveldb10ComparatorE:

  • plyvel是Mythril依赖的Python-LevelDB绑定库,用于对接以太坊节点的LevelDB格式链上数据
  • 该问题是macOS平台下的典型依赖不兼容问题:pip默认安装的plyvel预编译wheel包,编译时链接的LevelDB版本和本地系统/Homebrew安装的LevelDB版本符号表不匹配,在macOS Monterey这类版本上极易出现动态链接失败的问题。
修复步骤

按顺序执行以下操作即可解决:

  1. 卸载当前已安装的异常版本依赖
pip uninstall -y mythril plyvel
  1. 通过Homebrew安装LevelDB及相关编译依赖
brew install leveldb snappy
  1. 强制从源码编译安装plyvel,跳过预编译wheel包,确保链接到本地安装的正确版本LevelDB
pip install plyvel --no-binary :all:

如果编译时提示找不到LevelDB头文件/库文件,执行以下命令指定编译路径后重新安装plyvel:

CFLAGS="-I$(brew --prefix leveldb)/include -L$(brew --prefix leveldb)/lib" pip install plyvel --no-binary :all:
  1. 重新安装对应版本的Mythril
pip install mythril==0.23.3
  1. 执行myth --version验证命令可正常启动后,重新运行原分析命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 08:54:20