Mac OS X 10.6.8安装pocketsphinx失败求助:找不到pybuffer.i
解决Mac OS X 10.6.8上Python3.6.3安装pocketsphinx时的SWIG错误
这个问题我之前帮朋友排查过,本质是SWIG找不到Python自带的pybuffer.i接口文件,加上你的系统版本比较老(Mac OS X 10.6.8),默认的路径配置可能有偏差,导致安装失败。下面是一步步的解决方法:
第一步:找到pybuffer.i的位置
首先得确定你的Python3.6安装目录下有没有这个文件,打开终端执行:
find / -name pybuffer.i 2>/dev/null
正常情况下,你会得到类似这样的路径:/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m/pybuffer.i
如果没找到,说明你的Python3.6安装不完整,建议重新安装对应版本的Python。
第二步:手动指定SWIG的include路径安装
找到路径后,在安装pocketsphinx时,通过SWIG_FLAGS参数告诉SWIG去哪里找pybuffer.i,执行以下命令:
SWIG_FLAGS="-I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m/" pip install pocketsphinx
注意把上面的路径替换成你实际找到的pybuffer.i所在目录。
如果这个命令还是报错,试试用CFLAGS参数指定:
CFLAGS="-I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m/" pip install pocketsphinx
第三步:如果还是失败,检查SWIG版本
Mac OS X 10.6.8自带的SWIG版本可能太旧,不支持pybuffer.i的语法。你可以先查看当前SWIG版本:
swig -version
如果版本低于3.0,建议手动编译安装一个兼容的SWIG版本(比如3.0.12,这个版本对旧系统支持较好):
- 从SWIG官网下载对应版本的源码包
- 解压后进入目录,执行:
./configure --prefix=/usr/local make sudo make install
安装完成后再重新执行第二步的pip安装命令。
补充:源码安装的备选方案
如果上面的方法都不行,你可以尝试从源码手动安装pocketsphinx:
- 克隆源码:
git clone https://github.com/cmusphinx/pocketsphinx-python.git - 进入目录,修改
setup.py,在setup()函数里的include_dirs中添加你的Python include路径,比如:
include_dirs=[ '/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m/', # 保留其他原有路径 ]
- 然后执行
python setup.py install完成安装。
内容的提问来源于stack exchange,提问作者Delalie Rawllings
相关产品推荐
相关产品推荐

