Windows7 64位Python3.6连接Hive报错:No module named 'ttypes'
解决Python 3.6连接Hive时出现的
ModuleNotFoundError: No module named 'ttypes'问题 我之前在老版本Python+Windows环境下连接Hive时也碰到过一模一样的问题,折腾了好一阵才解决,给你几个针对性的排查和解决步骤:
1. 适配Python 3.6的依赖包版本组合
Python 3.6属于比较老旧的版本,你当前安装的包版本可能存在兼容性冲突。建议按以下步骤重新安装匹配的依赖:
- 先卸载现有相关包:
pip uninstall -y pure-sasl PyHive thrift thrift-sasl - 按指定顺序安装兼容版本(亲测在Python3.6+Win7环境下有效):
更高版本的thrift在Python3.6中会出现模块生成不完整的问题,降级到0.10.0后能正常暴露pip install thrift==0.10.0 thrift-sasl==0.2.1 pure-sasl==0.4.0 PyHive==0.5.0ttypes模块。
2. 确认Anaconda环境的激活状态
很多时候问题出在没激活正确的环境:
- 打开Anaconda Prompt,输入
conda activate 你的环境名称激活目标环境 - 运行
pip list,确认pure-sasl、PyHive、thrift、thrift-sasl都出现在已安装列表里 - 运行代码时务必使用激活环境中的Python解释器,不要用系统默认的Python
3. 检查ttypes模块是否存在
到你的Anaconda环境的site-packages目录(比如C:\Users\你的用户名\anaconda3\envs\你的环境名\Lib\site-packages\pyhive),查看是否有hive文件夹,里面应该包含TCLIService、ttypes.py等文件。如果缺失:
- 重新安装PyHive时加上
--no-cache-dir参数避免缓存干扰:pip install --no-cache-dir PyHive==0.5.0
4. 临时调整导入路径(备选方案)
如果前面的方法都没解决,可以尝试手动指定模块路径:
import sys # 替换成你自己的环境site-packages路径 sys.path.append("C:\\Users\\你的用户名\\anaconda3\\envs\\你的环境名\\Lib\\site-packages\\pyhive\\hive") from pyhive import hive
这个属于临时 workaround,优先推荐前面的版本适配方案。
内容的提问来源于stack exchange,提问作者Ahmed Hassan
相关产品推荐
相关产品推荐

