Python在Windows下成功安装Kenlm的究极方法

前言

我尝试了网上的多种方法,但最后无一例外都是报错如下:
1.error: Microsoft Visual C++ 14.0 is required....;
2.无法打开"zlib.h",路径找不到;
3.大部分提示报错cl.exe status 2;
4.fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory;
5.error C2039: 'max': is not a member of 'std'.
每一个错误都是一部血泪史,但最后cl.exe的错误一直都存在,可以接受编译警告,勉强使用Kenlm,但编译错误却无法避免,经过长时间尝试,有了以下行之有效的方法:

条件

首先强调一下本机条件,推荐WIndows10系统,其他版本需要自行安装PowerShell,原因是Kenlm原本是以linux为基础训练而成的,后期才推出Windows版本,故有此条件;
此外,本机需安装Microsoft Visual C++ 14.0(或更高版本),并在C:\Windows\System32文件夹下加入mspdb140.dll,网上一堆,下载即可。

方法

现在直接在CMD下运行以下命令:pip install -e git+https://github.com/kpu/kenlm.git#egg=kenlm
这里有80%的报错几率,如果你不够幸运(哎,反正我是没那个运气),请严格按照以下步骤辅助程序编译:
1.在默认库文件夹下(我的电脑是C:\Program Files\Microsoft Visual Studio 14.0\VC\INCLUDE\)添加一个unistd.h文件,其内容如下:
'''

ifndef _UNISTD_H

define _UNISTD_H

include

include

endif /* _UNISTD_H */

'''
2.在kenlm.cpp,model.cc文件中前部添加static int KENLM_MAX_ORDER = 6;
3.在file.cc,model.cc,model.hh文件中的添加头文件: #include
再次安装kenlm即可编译成功。

使用

最后一点,使用过程中出现卡死现象,是因为缓存太多导致的,这在虚拟机等环境尤其明显,可在运行Python命令时追加--no-cache-dir后缀,或者删除Python文件夹下Kenlm和Pycorrector模块的pycache子目录。
贴上一张安装kenlm成功的图片:

kenlm安装完成.PNG

你可能感兴趣的:(Python在Windows下成功安装Kenlm的究极方法)