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

升级nltk到3.6.2后cannot import name 'find_dir'报错如何解决

NLTK 3.6.2版本ImportError修复方案

根因说明

该报错是因为NLTK 3.6及以上版本已将find_dir接口从nltk.internals模块中移除,但内置的nltk.parse.malt模块仍保留了旧版本的导入逻辑,导致导入失败。

可用修复方案

  • 方案1:修改malt.py源码适配新版接口

    1. 打开报错路径下的文件:C:\Program Files\Python39\lib\site-packages\nltk\parse\malt.py
    2. 将第18行的导入语句修改为:
    from nltk.internals import find_file, find_jars_within_path
    
    1. 把文件中所有调用find_dir()的代码,替换为find_file(原参数, path_is_dir=True),即可完全替代原有功能。
  • 方案2:回退到兼容的NLTK版本
    不需要修改任何源码,直接执行命令安装3.5版本即可:

    pip install nltk==3.5
    
  • 方案3:手动添加兼容接口
    打开C:\Program Files\Python39\lib\site-packages\nltk\internals.py,在文件末尾添加如下代码:

    def find_dir(resource_name, env_vars=(), search_path=(), verbose=False):
        return find_file(resource_name, env_vars, search_path, verbose, path_is_dir=True)
    

    即可让旧的导入逻辑正常生效。

注意:如果你使用的是Python虚拟环境,需要修改对应虚拟环境路径下的site-packages内的文件,不要错误修改全局Python的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:45:00