Hive——pyhive依赖模块sasl安装(pip install sasl)报错Microsoft Visual C++ 14.0 is required

问题背景

这个问题是在Windows7上安装pyhive时遇到的。因为安装 pyhive 要依赖 sasl 模块,在pip install sasl 时报错 “缺少Microsoft Visual C++编译器” 。
 

下面即是在执行 pip install sasl 时,出现的一系列问题,以及相应的解决方法。

问题一:error: Microsoft Visual C++ 14.0 is required

1. 报错信息

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": 
https://visualstudio.microsoft.com/downloads.

2. 原因分析

虽然Python是一种解释性语言,但是在某些情况下可能需要安装Windows C++编译器。与Linux不同的是,Windows编译器在默认情况下是不包含在操作系统中的。这就需要我们自己安装了。微软提供了官方的C++编译器Visual C++,它是和Visual Studio捆绑在一起的。那么我们最终选择一个包含Visual C++ 14.0的Visual Studio来安装,这里选择的是Visual Studio 2017的版本。

注意:在安装Visual Studio 2017之前,建议先更新 pip install --upgrade setuptools。官方说是它包含兼容性的改进和添加编译器的自动使用。

3. 解决方法

解决方案就是安装Microsoft Visual Studio。

1. 下载Microsoft Visual Studio

官方下载地址:https://docs.microsoft.com/zh-cn/visualstudio/releasenotes/vs2017-relnotes#15.9.14。这里下载免费的社区版本即可。下载

2. 安装Microsoft Visual Studio

安装时需要勾选的选项:

  • 选择"工作负载"
  • Windows一栏勾选 “使用 C++ 的桌面开发”
  • Web和云一栏勾选Python开发

如下图红框所示:
勾选
注意:要下载的文件比较大,有7G左右,可能耗时较长。

其他步骤默认即可。
 

问题二:ImportError: DLL load failed

上面的问题解决之后,再次安装sasl时可能会继续遇到第二个问题。

1. 报错信息

比如会出现下面的报错信息:

ImportError: DLL load failed: 找不到指定的程序。

2. 解决方法

用Python安装根目录下的 python3.dll 文件替换PyCharm工程\venv\Scripts目录下的同名文件。具体原因不太明确,可能是要加载的DLL文件不匹配?
 

问题三:“sasl/sasl.h”: No such file or directory

第二个问题解决之后,继续执行pip install sasl,可能又会遇到第三个问题:

1. 报错信息

 ..\pip-install-wrsldjm1\sasl\sasl\saslwrapper.h(22): fatal error C1083: 无法打开包括文件: “sasl/sasl.h”: No such file or directory

2. 解决方法

这个问题是因为缺少一个sasl文件。

  • 下载一个对应你所使用的Python版本和Windows版本的sasl文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl。例如, sasl‑0.2.1‑cp36‑cp36m‑win_amd64.whl,它对应的Python 版本为3.6,对应的Windows系统为64位。
  • 安装执行pip install sasl-0.2.1-cp37-cp37m-win_amd64.whl

解决完上面这几个问题之后,应该就可以成功的安装sasl了。
 

参考

  1. WindowsCompilers
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值