如何注销错误注册的同名Cython扩展(与spacy冲突)
解决同名Cython扩展导致的Spacy导入错误
你的问题源于当前目录下存在你自行编译的同名spacy扩展文件,Python导入模块时会优先加载当前目录的文件,而非系统安装的官方Spacy包,进而引发错误。解决步骤如下:
1. 删除当前目录下的自定义Spacy编译文件
找到并删除执行build_ext --inplace命令的目录中的以下文件:
- 你的Cython源文件:
spacy.pyx(后续不需要可直接删除,或重命名为其他名称避免冲突) - 编译生成的扩展文件:根据系统不同,文件名类似
spacy.cpXX-win_amd64.pyd(Windows)、spacy.cpython-XX-x86_64-linux-gnu.so(Linux)或spacy.cpython-XX-darwin.so(macOS) - 编译过程中生成的中间文件:比如
spacy.c、spacy.cpp等
2. 若已安装自定义扩展到系统,需手动清理
如果你曾执行python setup.py install将该错误扩展安装到Python的site-packages目录,需手动处理:
- 打开Python的site-packages路径(可通过
import sys; print(sys.path)查看) - 删除其中与自定义
spacy扩展相关的文件(如spacy.*.so/.pyd)以及对应的spacy-*.egg-info目录
3. 验证修复效果
确保当前目录无spacy相关自定义文件后,重新运行你的Spacy代码:
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp(u"The firm earned $1.5 million in 2017.")
此时Python会正常加载系统安装的官方Spacy包,错误即可消除。
内容的提问来源于stack exchange,提问作者AC1D
相关产品推荐
相关产品推荐

