承接上文,关于22ver的the annotated transformer源码中,频繁出现的报错,终于找到了原因。
就是spacy和pydantic版本冲突。
可调到最后复制升级spacy到3.2.6的语句。也可以看看文章,检查自己的pydantic版本是否也有问题。
我们在直接运行Harvard源码的requirement.text时会装3.2.0的spacy源码。会与pydantic的版本冲突。报错 issubclass() arg 1 must be a class
以下是改bug前我的包信息
(annotrans) C:\Windows\System32>pip list | findstr pydantic
pydantic 1.8.2
(annotrans) C:\Windows\System32>python -m spacy info
============================== Info about spaCy ==============================
spaCy version 3.2.0
Location C:\ProgramData\anaconda3\envs\annotrans\lib\site-packages\spacy
Platform Windows-10-10.0.22631-SP0
Python version 3.8.19
Pipelines de_core_news_sm (3.2.0), en_core_web_sm (3.2.0)
在探索spacy库的github时首先发现了这个Update constraints on pydantic · Issue #8428 · explosion/spaCy · GitHub,对于3.0的spacy,pydantic版本要求:pydantic>=1.7.4,!=1.8,!=1.8.1,<1.9.0
感觉可能1.8和1.8.1就是不对的,我看我pydantic也没错,于是继续找符合3.2.0的解决方案
具体可以看这个
Update constraints on pydantic · Issue #8428 · explosion/spaCy · GitHub
解决方案
由于我仍然想保留与源代码一致的3.2版本的spacy,所以直接按照原文,升级了我的spacy3.2版本。
这里直接用可能有语法报错,以下是我的anaconda prompt语句
(annotrans) C:\Windows\System32>python -m pip install "spacy~=3.2.6"