缘起
为了探究时序模式,需要对时序数据进行嵌入编码。Word2Vec无法处理OOV(Out-of-Vocabulary)问题,故而选择了“字符级”学习嵌入模型FastText。
然而在Windows11工作站上部署FastText时,却遇到了编译问题。
问题
在CMD中运行“pip install fasttext”,程序会自动访问官方PYPI库,下载FastText的源码到本机,并尝试本地编译生成Python模块,但是这里先后遇到了两个问题:
① 本机缺少Microsoft Visual C++编译库,此时需要去官方Microsoft C++ 生成工具 - Visual Studio下载(https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/),本地安装,务必记得勾选三个组件(C++ CMake工具,C++桌面开发以及C++工具),否则安装后运行依旧会提示缺少编译库错误。记得安装后重启系统另编译库生效。
error: Microsoft Visual C++ 14.0 or greater is required. Get it with
“Microsoft C++ Build Tools”:
https://visualstudio.microsoft.com/visual-cpp-build-tools/
② 即便成功安装了编译库,本地编译fasttext源码时依旧会出问题,而且问题层出不穷,比如提示缺少"float.h",此时需要确保安装了“Windows 10 SDK”组件,或者修复重新安装C++编译工具(BuildTools)
d:\Program Files (x86)\Microsoft Visual
Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\include\cfloat(10):
fatal error C1083: 无法打开包括文件: “float.h”: No such file or directory
error: command ‘d:\Program Files (x86)\Microsoft Visual
Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\bin\HostX86\x64\cl.exe’
failed with exit code 2
③ 即便成功解决了上述两个问题,依旧会在编译pybind时出现错误,提示类参数只有一个,却输入了三个???
新的问题
开始尝试本地下载源码并编译得到fasttext模块,但是C++编译总是出问题(而这时pip install fasttext的默认方法)。为何不索性跳过编译过程,直接下载安装编译好的wheel文件呢?
于是去PYPI库查找fasttext-wheel(https://pypi.org/project/fasttext/#files),发现最新版本是fasttext-0.9.3,更新时间是2024年6月。选中其中的“Download files”,结果发现只有适用macos版本且python-3.9的预编译版本wheel!Windows系统无法使用!


解决
没关系,既然最新的0.9.3不可用,那么早期版本呢?在PYPI上搜索“fasttext”可以找到2020年发布的0.9.2版本,好在其提供了可供使用的wheel版本,确保自己系统的python在其支持范围内(最大python-3.12),然后选择下载即可!
下载地址:https://pypi.org/project/fasttext-wheel/#files
下载后在wheel所在目录执行“pip install fasttext…”即可!

总结
-1- 本地编译代码不是个好主意,尽可能选择预编译的wheel版本
-2- 不是越新的anaconda越好,为了保证兼容性,使用上一年的版本是比较稳妥的
-3- 如果不在本地编译fasttext,可以不用安装C++生成工具
PS:上述技术日志写作日期为“2025年11月06日”,各软件版本库有效期以写作日期为准,大家参考时需根据实际软件版本确认。
2万+

被折叠的 条评论
为什么被折叠?



