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

Python3.10运行inltk代码报无法从collections导入Iterable错误

报错根因

该错误由Python版本迭代的API变更+第三方库版本适配不及时共同导致:

  • Python 3.9及更早版本中,Iterable等集合抽象基类在collections和collections.abc模块下双份存在,从collections导入仅会触发弃用警告,不影响运行。
  • Python 3.10及以上版本彻底移除了collections模块下的所有抽象基类,相关类仅能从collections.abc导入。你当前运行环境是Python 3.10,而安装的inltk库版本过旧,内部仍使用from collections import Iterable的旧语法,因此触发导入错误。

另外你贴出的代码本身存在语法问题:整体被三引号包裹成了字符串注释、try/except缩进不匹配、残留enter code here/## Heading ##这类无效标记,即使解决导入问题也无法正常运行。

修复方案

任选以下一种方案即可解决问题:

  • 方案1:前置兼容(推荐,无需改动第三方库或Python版本)
    在所有导入语句的最开头添加兼容映射,让旧库的导入逻辑可以正常找到对应类,同时修正你本身代码的语法错误:
    # 最开头先做版本兼容
    import collections
    import collections.abc
    collections.Iterable = collections.abc.Iterable
    collections.Mapping = collections.abc.Mapping
    collections.MutableSet = collections.abc.MutableSet
    collections.MutableMapping = collections.abc.MutableMapping
    
    # 后续写业务逻辑,去掉无效字符、修正缩进
    from inltk.inltk import tokenize
    hindi_text = """प्राचीन काल में विक्रमादित्य नाम के एक आदर्श राजा हुआ करते थे।
    अपने साहस, पराक्रम और शौर्य के लिए  राजा विक्रम मशहूर थे। ऐसा भी कहा जाता है कि राजा विक्रम अपनी 
    प्राजा के जीवन के दुख दर्द जानने के लिए रात्री के पहर में भेष बदल कर नगर में घूमते थे।"""
    
    # 调用分词方法
    tokenize(hindi_text, "hi")
    
  • 方案2:降级Python版本
    卸载当前Python 3.10,安装Python 3.9及更早的Python 3版本,旧版本保留了collections模块下的抽象基类导入支持,无需额外修改代码即可运行。
  • 方案3:修改第三方库源码
    根据报错路径找到inltk库的本地安装文件,将所有from collections import Xxx(Xxx为抽象基类名)的语句替换为from collections.abc import Xxx。该方法的缺陷是后续升级inltk时修改会被覆盖,不推荐优先使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:18:43