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

MacBook上Python3.12.5导入spaCy和gensim遇TypeError求助

问题原因与解决方法

原因分析

这个错误确实和Python 3.12的版本更新有关:Python 3.12对typing.ForwardRef._evaluate()方法新增了recursive_guard这个必填关键字参数,但你当前使用的spaCy 3.7.5和gensim 4.3.2版本的代码中,调用该方法时没有传入这个参数,导致类型错误。

解决方法

方法一:降级Python到3.11.x版本

Python 3.12是较新的大版本,很多第三方库还在适配中,降级到稳定的3.11系列可以直接解决兼容性问题:

  • 如果用pyenv管理版本:
    pyenv install 3.11.6
    pyenv local 3.11.6
    
  • 如果用conda管理:
    conda create -n py311 python=3.11.6
    conda activate py311
    

之后重新安装spaCy和gensim即可正常使用。

方法二:升级spaCy和gensim到适配Python 3.12的版本

检查并升级到库的最新稳定版,看是否已经修复了Python 3.12的兼容性问题:

pip install --upgrade spacy gensim

如果升级后仍报错,说明官方还未发布适配版本,可以关注库的更新动态,等待后续修复。

方法三:临时修改typing模块(不推荐)

如果不想降级或等待更新,可以手动修改Python的typing.py文件,给ForwardRef._evaluate()方法的recursive_guard参数添加默认值:

  1. 找到Python安装目录下的typing.py文件(比如路径为/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/typing.py)
  2. 找到ForwardRef类的_evaluate方法,将方法定义修改为:
    def _evaluate(self, globalns=None, localns=None, recursive_guard=frozenset()):
    
  3. 保存文件后重启Jupyter Notebook即可。
    注意:这个方法是临时 workaround,后续更新Python或相关库时会被覆盖,且可能影响其他依赖typing模块的库。

内容的提问来源于stack exchange,提问作者M K Snowman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:22:35