在OS X 10.12.4安装PyICU遇decltype类型错误求助
解决OS X 10.12.4下PyICU安装时
decltype编译错误的方案 嘿,我来帮你搞定这个PyICU的安装问题!你遇到的./common.h:38:13: error: unknown type name 'decltype'错误,本质是编译PyICU时没有启用C11标准——decltype是C11才引入的关键字,而OS X 10.12.4自带的编译器默认没开这个选项,再加上PyICU依赖的ICU库环境没配置好,才导致编译失败。下面是具体的解决步骤:
第一步:用Homebrew安装完整的ICU4C库
PyICU依赖ICU(International Components for Unicode)库,直接用pip安装时会尝试编译轻量版本,但容易出环境问题。先通过Homebrew装官方的ICU4C开发包:
brew install icu4c
第二步:指定环境变量和编译选项安装PyICU
安装完ICU4C后,需要告诉pip ICU的安装路径,同时强制启用C++11编译标准。你可以直接执行这条组合命令:
CFLAGS="-std=c++11" \ LDFLAGS="-L/usr/local/opt/icu4c/lib" \ CPPFLAGS="-I/usr/local/opt/icu4c/include" \ pip install pyicu
如果上面的命令执行时还有问题,也可以先把环境变量设置好,再单独执行pip安装:
# 先配置ICU相关的环境变量 export PATH="/usr/local/opt/icu4c/bin:$PATH" export PATH="/usr/local/opt/icu4c/sbin:$PATH" export LDFLAGS="-L/usr/local/opt/icu4c/lib" export CPPFLAGS="-I/usr/local/opt/icu4c/include" # 启用C++11编译标准 export CFLAGS="-std=c++11" # 安装PyICU pip install pyicu
第三步:验证安装是否成功
安装完成后,打开Python终端测试一下:
import icu print(icu.VERSION)
如果能正常输出ICU的版本号,说明安装成功啦!这时候再运行你之前的polyglot代码:
from polyglot.downloader import downloader print(downloader.supported_languages_table("ner2", 3))
应该就不会再出现PyICU相关的错误了。
补充说明
为啥会出这个错?因为OS X 10.12.4的默认clang编译器虽然支持C++11,但PyICU的setup.py默认没有加上-std=c++11这个编译选项,导致编译器不认识decltype。另外,提前用Homebrew装ICU4C,能确保PyICU使用完整的Unicode支持库,避免编译时的依赖缺失问题。
内容的提问来源于stack exchange,提问作者Aaditya Ura
相关产品推荐
相关产品推荐

