【CodeLife】本地部署FastText

缘起

为了探究时序模式,需要对时序数据进行嵌入编码。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日”,各软件版本库有效期以写作日期为准,大家参考时需根据实际软件版本确认。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值