Python导入ibis报AttributeError: rules模块无analytic属性
报错根源
这个问题和版本高低、环境搭建是否完整没有关系,核心是装错了同名Python包。
PyPI上有两个同名的ibis包:
- 你代码要调用的、用于数据分析表达式的ibis项目,正确的安装包名是
ibis-framework,这个包的ibis.expr.rules模块才内置analytic、window等你代码里用到的属性 - 另一个是长期停更的旧模板引擎,包名就叫
ibis,这个包的模块结构和你参考的ibis框架完全不一样,根本没有对应的属性,你当前conda环境里装的就是这个错的包。
修复操作
- 彻底卸载当前环境里错误的ibis包,conda和pip两个维度都要清,避免残留:
conda remove -y ibis pip uninstall -y ibis
- 安装正确的ibis框架包,二选一即可:
# conda安装方式 conda install -c conda-forge ibis-framework # pip安装方式 pip install ibis-framework
- 安装完成后做个简单校验,打开Python交互终端执行:
from ibis.expr import rules as rlz print(hasattr(rlz, 'analytic')) # 正常返回True print(hasattr(rlz, 'window')) # 正常返回True
校验通过后再运行原有代码,就不会触发属性不存在的报错了。
补充:之后遇到类似模块属性和文档对不上的问题,可以先执行
print(对应模块名.__file__)打印包的本地安装路径,对照官方给出的包结构排查,不用反复重装环境做无用功。
内容的提问来源于stack exchange,提问作者Kartik Agarwal
相关产品推荐
相关产品推荐

