Python中Kanren库导入报错:无法从collections导入Iterator
解决Kanren库在Python3.10+中的导入错误
问题根源
你遇到的ImportError是因为Python3.10及以上版本中,Iterator类从collections模块迁移到了collections.abc模块,而你安装的unification库(kanren的依赖库)版本过旧,代码里还是从旧路径导入Iterator,导致报错。你自己在代码里导入collections.abc.Iterator没用,因为问题出在库的内部代码里。
解决方案
方案1:升级unification库
这是最简便的方法,新版unification已经修复了这个导入问题。在终端或Jupyter的代码单元格里运行:
pip install --upgrade unification
升级完成后重新运行你的导入代码即可。
方案2:手动修改unification库的源码
如果升级后仍有问题(比如版本兼容问题),可以直接修改库的代码:
- 找到unification库的
core.py文件,路径是:C:\Users\91997\anaconda3\lib\site-packages\unification\core.py - 打开文件,把第2行的
from collections import Iterator替换成:from collections.abc import Iterator - 保存文件后,重新运行你的代码。
验证
修改完成后,运行以下代码测试导入是否正常:
from kanren import run, var, fact from kanren.assoccomm import eq_assoccomm as eq from kanren.assoccomm import commutative, associative
内容的提问来源于stack exchange,提问作者Meet Thakor
相关产品推荐
相关产品推荐

