Thrift编译安装报错:Python 2.7.11提示找不到'six'模块
make check时Python 2.7模块找不到的问题 我之前在编译Thrift的时候也碰到过类似的Python环境相关问题,结合你的情况(排除多版本冲突、能运行简单脚本),给你几个具体的排查和解决步骤:
1. 先定位具体缺失的模块
你提到执行make check报错,但没说明具体是哪个模块找不到——这是关键信息。建议先捕获完整的错误日志:
make check 2>&1 | tee thrift-check-error.log
打开日志文件,找到类似ImportError: No module named xxx的行,明确缺失的模块名称,后续针对性解决。
2. 检查Python 2.7的依赖包和路径
先确认Python 2.7的site-packages路径是否在搜索路径里:
python2.7 -c "import sys; print('\n'.join(sys.path))"如果看不到
site-packages相关路径,可能需要手动设置环境变量:export PYTHONPATH=/path/to/python2.7/site-packages:$PYTHONPATH替换成你实际的site-packages路径(通常在
/usr/lib/python2.7/site-packages或~/.local/lib/python2.7/site-packages)。检查是否安装了Thrift测试需要的依赖包,比如
six、unittest2、thrift本身(测试可能需要先安装基础模块):pip2.7 list | grep -E "six|unittest2|thrift"缺失的话直接安装:
pip2.7 install six unittest2
3. 重新配置Thrift编译参数,指定Python 2.7
有时候configure脚本可能没有自动识别到正确的Python版本,建议重新指定:
# 先清理之前的编译缓存 make clean # 重新配置,明确指定Python 2.7路径 ./configure --with-python=/usr/bin/python2.7 # 重新编译 make # 再执行检查 make check
注意把/usr/bin/python2.7替换成你系统中Python 2.7的实际路径(可以用which python2.7查看)。
4. 确认Versions目录的Current链接正确性
你说Versions目录只有2.7和Current,那要确保Current是指向2.7的软链接:
ls -l /path/to/Versions/
如果输出里Current不是指向2.7,重新创建链接:
# 先删除旧链接 rm /path/to/Versions/Current # 创建新的软链接 ln -sf /path/to/Versions/2.7 /path/to/Versions/Current
替换成你的Versions实际路径。
5. 手动先安装Thrift Python模块
有时候make check会依赖已经安装的Thrift Python模块,你可以先手动安装:
# 进入Thrift源码的Python模块目录 cd lib/py # 用Python 2.7安装 python2.7 setup.py install # 回到根目录再执行检查 cd ../.. make check
如果做完这些还是有问题,把具体的错误信息贴出来,就能更精准地定位了。
内容的提问来源于stack exchange,提问作者MateoIO

