Python 2.7部署PyHive遇ImportError: No module named builtins问题
解决PyHive在Python 2.7中导入时的"ImportError: No module named builtins"问题
嘿,我来帮你搞定这个PyHive导入报错的问题~这个错误根源很明确:builtins是Python 3的内置模块,而PyHive 0.5.1的部分代码用到了它,虽然官方说支持Python 2,但需要future库来做兼容层——你已经装了future,但可能是版本适配或者触发逻辑的问题,我给你两个解决方案,先试试不用升级Python的办法,再说说升级到Python 3的注意事项(毕竟这是更长期的靠谱方案)。
方案一:修复Python 2.7环境下的依赖兼容问题
- 先确认
future库的安装状态:你装的是future-0.9.0,这个版本确实支持Python 2.7,但先检查安装是否真的成功。可以在命令行执行pip show future(如果你的Python 2.7装了pip的话),或者直接去Python的site-packages目录里看看有没有future文件夹。 - 如果安装没问题,试试手动在测试脚本开头添加兼容触发代码,强制启用Python 3的模块兼容:
from __future__ import absolute_import, division, print_function import builtins from pyhive import hive - 要是还是不行,建议更换
future的版本试试,比如future-0.18.3(这是支持Python 2的最后几个稳定版本之一)。你可以在有网机器上下载好future-0.18.3.tar.gz,传到无网机器后重新执行python setup.py build && python setup.py install。 - 另外也确认下
thrift的安装状态:PyHive 0.5.1搭配thrift 0.11.0是没问题的,执行python -c "import thrift"看看有没有报错,确保thrift也正确安装了。
方案二:升级到Python 3(更推荐的长期方案)
毕竟Python 2.7已经停止维护好几年了,后续几乎不会有库再支持它,升级到Python 3是更稳妥的选择,针对你的无网环境,步骤如下:
- 先在有网机器上下载Windows 10 64位对应的Python 3离线安装包(推荐选3.8.x或3.9.x这类稳定版本,要选包含所有依赖的exe格式离线包)。
- 把安装包传到无网机器上执行安装,记得勾选“Add Python to PATH”选项(如果安装界面有的话,这样后续用命令行更方便)。
- 然后在有网机器上下载PyHive及其所有依赖的离线包:打开命令行,执行
pip download pyhive[hive],这个命令会把PyHive、thrift、sasl等所有需要的依赖都下载到当前目录。 - 把这些下载好的.tar.gz或.whl文件全部传到无网机器上,进入文件所在目录,执行
pip install --no-index --find-links=. pyhive[hive],这样pip会完全从本地文件安装所有依赖,不用联网。 - 安装完成后,再测试
from pyhive import hive,应该就能正常运行了。
内容的提问来源于stack exchange,提问作者David Rush
相关产品推荐
相关产品推荐

