如何找到引发Spacy模块遮蔽错误的spacy.py文件以重命名?
解决Spacy的
AttributeError: module 'spacy' has no attribute 'load'问题 问题描述
尝试用pip、conda、Git三种方式安装Spacy后,运行代码时始终报错:
import spacy nlp = spacy.load("en_core_web_sm")
错误信息:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[26], line 3 1 import spacy ----> 3 nlp = spacy.load("en_core_web_sm") AttributeError: module 'spacy' has no attribute 'load'
怀疑是spacy.py文件导致的模块遮蔽,但找不到该文件;Python路径为/Users/my_name/anaconda3/bin/python,该目录下只有名为spacy的Unix可执行文件,重命名后问题依旧。
解决方案
- 检查当前工作目录的同名文件:模块遮蔽最常见的情况是当前运行代码的目录里有
spacy.py、spacy.pyc这类同名文件,哪怕不在Python安装目录里也会触发。在终端执行ls | grep spacy,找到后直接删除或重命名。 - 验证Spacy模块的实际路径:运行以下代码确认导入的
spacy是不是官方模块:
如果输出不是类似import spacy print(spacy.__file__)/Users/my_name/anaconda3/lib/python3.x/site-packages/spacy/__init__.py的路径,说明导入的是其他同名文件,找到后删除即可。 - 彻底重装并清理缓存:
- 先完全卸载Spacy:
pip uninstall -y spacy conda uninstall -y spacy - 清理Python缓存文件:
find /Users/my_name/anaconda3 -name "spacy*.pyc" -delete find /Users/my_name/anaconda3 -name "__pycache__" -type d -exec rm -r {} + - 用conda重新安装(优先用conda避免环境冲突):
conda install -c conda-forge spacy python -m spacy download en_core_web_sm
- 先完全卸载Spacy:
- 确认运行环境一致性:检查当前代码运行的Python环境和
which python输出的环境是否一致——有时候Jupyter Notebook或IDE会默认使用其他虚拟环境,导致安装的Spacy不在当前环境里。可以在代码里执行import sys; print(sys.executable)对比路径是否匹配。
内容的提问来源于stack exchange,提问作者psychcoder
相关产品推荐
相关产品推荐

