使用pip安装spaCy失败求助:编译blis时提示找不到clang
我之前也踩过这个Windows安装spaCy的坑,尤其是编译blis依赖时触发的[WinError 2]找不到clang的问题,给你几个亲测有效的解决办法:
补全C++编译环境:
Windows默认没有自带编译C/C代码的工具链,blis编译需要这个。去安装Visual Studio Build Tools(推荐2019及以上版本),安装过程中一定要勾选「C构建工具」,并确保包含MSVC v142+编译器、Windows SDK这些核心组件。安装完成后重启你的命令行/终端,再尝试执行pip install spacy。安装LLVM并配置PATH:
如果更倾向用clang编译,可以去LLVM官网下载Windows版安装包,安装时记得勾选「Add LLVM to the system PATH」选项(默认可能没选)。装完重启终端,让PATH生效,再重新运行spaCy的安装命令。如果已经装过LLVM但没加PATH,手动把C:\Program Files\LLVM\bin这个路径添加到系统环境变量的PATH里就行。直接安装预编译的blis轮子:
跳过编译步骤,直接用预编译好的blis包。去PyPI搜索blis,找到和你Python版本、系统架构匹配的.whl文件(比如Python 3.10+64位系统的话,找类似blis-0.7.10-cp310-cp310-win_amd64.whl的文件),下载后用pip install 你的下载路径/blis-xxx.whl安装,之后再执行pip install spacy就不会再触发编译了。用conda一键安装(最省心):
如果你有conda环境(比如Anaconda/Miniconda),直接执行conda install -c conda-forge spacy。conda会自动处理所有依赖,包括提供预编译好的blis,完全不用自己操心编译的问题,我后来就是用这个方法快速解决的。
补充说明
这个问题本质是Windows系统缺少编译blis所需的C/C++编译器工具链,要么补全工具让编译能正常进行,要么直接用别人预编译好的包绕过编译环节,上面几个方法都能解决这个「找不到clang」的报错。
内容的提问来源于stack exchange,提问作者X-Black...

