NLTK导入报错:无法导入defaultdict问题求助
问题根源与解决办法
从你的报错回溯里一眼就能定位问题——你当前目录下的tokenize.py和Python标准库的tokenize模块重名了,这直接引发了导入混乱和循环依赖:
看这段关键报错片段:
File "tokenize.py", line 2, in
from nltk.corpus import stopwords
当NLTK试图导入标准库的tokenize模块时,Python会优先搜索当前工作目录,于是先找到了你自定义的tokenize.py。而这个文件又导入了NLTK的模块,形成了循环导入链,最终因为你的自定义文件里没有defaultdict(这是标准库collections的内容),就抛出了ImportError。
具体解决步骤
- 立刻重命名你当前目录下的
tokenize.py,比如改成my_text_tokenize.py,彻底避免和标准库模块重名。 - 同时删除同目录下的
tokenize.pyc文件(这是Python编译后的缓存文件,不删掉可能还会残留问题)。 - 关闭当前的Python控制台,重新打开一个新会话,再执行
import nltk测试。
额外提醒
Python导入模块时,搜索顺序是「当前工作目录 → 系统标准库目录 → 第三方库目录」。以后写代码时,尽量不要用和标准库、常用第三方库重名的文件名,不然很容易出现这类“自己坑自己”的导入冲突。
内容的提问来源于stack exchange,提问作者Dinero
相关产品推荐
相关产品推荐

