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

导入ccxt、eospy、libeospy时触发InvalidKeyFile报错求助

问题现象

导入集成eospy、libeospy依赖的ccxt 1.42.7版本时触发运行异常,报错调用栈如下:

File "/app/venv/lib/python3.9/site-packages/ccxt/bullish_nav.py", line 29, in <module>
from eospy.cleos import EOSKey
File "/app/venv/lib/python3.9/site-packages/eospy/cleos.py", line 6, in <module>
from .keys import EOSKey, check_wif
File "/app/venv/lib/python3.9/site-packages/eospy/keys.py", line 6, in <module>
from .utils import sha256, ripemd160, str_to_hex, hex_to_int
File "/app/venv/lib/python3.9/site-packages/eospy/utils.py", line 5, in <module>
from .exceptions import InvalidKeyFile

运行环境为基于Python 3.9官方基础镜像搭建的Docker服务,搭载的操作系统版本信息:

NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian

环境内已安装的相关Python包版本:

  • Python: 3.9
  • eospy: 0.0.2
  • libeospy: 2.1.0
  • ccxt: 1.42.7
根因定位

问题由包命名空间冲突、旧版本适配缺陷两个核心问题叠加触发:

  • 同时安装eospy 0.0.2和libeospy 2.1.0会直接破坏导包逻辑:libeospy是eospy的社区分叉重构版本,两个包对外暴露的导入根路径均为eospy,Python导包时会按sys.path的排序优先加载路径靠前的包内文件,直接打断正常的模块引用链,这是最主要的诱因。
  • 你安装的eospy 0.0.2是2019年发布的老旧版本,本身未做Python 3.9、Debian 10自带OpenSSL 1.1.1版本的适配,其内部调用ripemd160等哈希算法的逻辑依赖系统旧版加密库,缺失依赖时会在加载exceptions模块前抛出底层C库加载错误,最终报错栈就停在导入InvalidKeyFile这一行,容易误导排查方向。
  • ccxt 1.42.7版本的bullish_nav模块写死了原生eospy的导入路径,本身不兼容libeospy的接口定义。
修复方案

按以下顺序操作即可解决问题:

  1. 先彻底卸载所有存在冲突的相关包,执行命令:
    pip uninstall -y eospy libeospy ccxt
    
  2. 安装Debian 10环境缺失的加密编译依赖,解决底层哈希算法加载失败的问题:
    apt update && apt install -y libssl-dev libffi-dev python3-dev
    
  3. 固定版本安装适配ccxt 1.42.7的eospy版本,禁止额外安装libeospy(两者无法共存):
    pip install eospy==0.0.3 ccxt==1.42.7
    
  4. 验证修复结果:执行python -c "import ccxt; print('ccxt load success, version:', ccxt.__version__)",无报错即为修复完成。

如果业务必须使用libeospy 2.1.0版本,直接将ccxt升级到1.50.0及以上版本即可,该版本之后ccxt已经适配了libeospy的导入路径,不会触发命名空间冲突问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:39:23