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

Python无法导入spaCy及下载en_core_web_sm问题求助

解决spaCy导入及模型下载报错问题

问题概述

  • 导入spaCy时触发ImportError: cannot import name util
  • 执行python -m spacy download en_core_web_sm时触发TypeError: issubclass() arg 1 must be a class
  • 已确认spaCy已安装,尝试卸载模型但提示未安装

错误详情

Error1:导入spaCy失败

ImportError                               Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_11524/513823458.py in <module>
      1 import sys
----> 2 import spacy

~\AppData\Roaming\Python\Python39\site-packages\spacy\__init__.py in <module>
     12 from thinc.api import Config
     13 
---> 14 from . import pipeline  # noqa: F401
     15 from .cli.info import info  # noqa: F401
     16 from .glossary import explain  # noqa: F401

~\AppData\Roaming\Python\Python39\site-packages\spacy\pipeline\__init__.py in <module>
----> 1 from .attributeruler import AttributeRuler
      2 from .dep_parser import DependencyParser
      3 from .edit_tree_lemmatizer import EditTreeLemmatizer
      4 from .entity_linker import EntityLinker
      5 from .ner import EntityRecognizer

~\AppData\Roaming\Python\Python39\site-packages\spacy\pipeline\attributeruler.py in <module>
      4 from pathlib import Path
      5 
---> 6 from .pipe import Pipe
      7 from ..errors import Errors
      8 from ..training import Example

~\AppData\Roaming\Python\Python39\site-packages\spacy\pipeline\pipe.pyx in init spacy.pipeline.pipe()

~\AppData\Roaming\Python\Python39\site-packages\spacy\vocab.pyx in init spacy.vocab()

~\AppData\Roaming\Python\Python39\site-packages\spacy\tokens\__init__.py in <module>
----> 1 from .doc import Doc
      2 from .token import Token
      3 from .span import Span
      4 from .span_group import SpanGroup
      5 from ._serialize import DocBin

~\AppData\Roaming\Python\Python39\site-packages\spacy\tokens\doc.pyx in init spacy.tokens.doc()

ImportError: cannot import name util

Error2:模型下载失败

Traceback (most recent call last):
  File "C:\Users\akira\anaconda3\lib\runpy.py", line 188, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "C:\Users\akira\anaconda3\lib\runpy.py", line 147, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "C:\Users\akira\anaconda3\lib\runpy.py", line 111, in _get_module_details
    __import__(pkg_name)
  File "C:\Users\akira\AppData\Roaming\Python\Python39\site-packages\spacy\__init__.py", line 14, in <module>
    from . import pipeline  # noqa: F401
  File "C:\Users\akira\AppData\Roaming\Python\Python39\site-packages\spacy\pipeline\__init__.py", line 1, in <module>
    from .attributeruler import AttributeRuler
  File "C:\Users\akira\AppData\Roaming\Python\Python39\site-packages\spacy\pipeline\attributeruler.py", line 6, in <module>
    from .pipe import Pipe
  File "spacy\pipeline\pipe.pyx", line 1, in init spacy.pipeline.pipe
  File "spacy\vocab.pyx", line 1, in init spacy.vocab
  File "C:\Users\akira\AppData\Roaming\Python\Python39\site-packages\spacy\tokens\__init__.py", line 1, in <module>
    from .doc import Doc
  File "spacy\tokens\doc.pyx", line 36, in init spacy.tokens.doc
  File "C:\Users\akira\AppData\Roaming\Python\Python39\site-packages\spacy\schemas.py", line 222, in <module>
    class TokenPattern(BaseModel):
  File "pydantic\main.py", line 205, in pydantic.main.ModelMetaclass.__new__
  File "pydantic\fields.py", line 491, in pydantic.fields.ModelField.infer
  File "pydantic\fields.py", line 421, in pydantic.fields.ModelField.__init__
  File "pydantic\fields.py", line 537, in pydantic.fields.ModelField.prepare
  File "pydantic\fields.py", line 634, in pydantic.fields.ModelField._type_analysis
  File "pydantic\fields.py", line 641, in pydantic.fields.ModelField._type_analysis
  File "C:\Users\akira\anaconda3\lib\typing.py", line 847, in __subclasscheck__
    return issubclass(cls, self.__origin__)
TypeError: issubclass() arg 1 must be a class

解决方案

1. 彻底清理现有spaCy及依赖

执行以下命令卸载所有相关包:

pip uninstall -y spacy pydantic thinc

2. 安装兼容版本

针对Python 3.9,推荐安装spaCy 3.4.x版本(该版本与Python3.9及pydantic 1.x完全兼容):

pip install spacy==3.4.4

3. 下载模型

重新运行模型下载命令:

python -m spacy download en_core_web_sm

4. 验证安装

创建测试脚本验证导入和使用:

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Hello, world!")
for token in doc:
    print(token.text, token.pos_)

原因说明

出现这两个错误的核心是版本不兼容:

  • 较新的spaCy版本(3.5+)对Python 3.9的类型处理存在兼容性问题,且依赖的pydantic 2.x与Python3.9的typing模块不匹配,导致issubclass报错
  • ImportError: cannot import name util是因为spaCy内部模块依赖缺失或版本冲突,清理后重新安装兼容版本即可解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:35:12