如何使2个版本的Fasttext Python包装器一起工作?

时间:2018-07-03 18:34:32

标签: python pip fasttext

我们使用Facebook的Fasttext令人惊叹的库已有一段时间了。我们使用python包装器(https://pypi.org/project/fasttext/)访问训练有素的模型。它曾经是一个第三方库,但是现在由Facebook maintained合并到其repository中。

问题是两个包装器不兼容。旧版本通过import fasttext(小写)导入,新版本通过import fastText导入。 API也有所不同。但最重要的是,新库不支持由较早的Fasttext版本训练的模型,而旧库则支持它们,但不支持新训练的模型。

我们正计划将所有模型迁移到新的Fasttext版本(具有量化功能,并且据说速度更快),但是在此期间我们需要支持两种类型的模型。因此,我们需要两个包装器并排工作。

将它们安装在一起的问题是,尽管模块名称不同,但它们仍尝试通过pip(fasttext)安装在相同的目录中。因此,其中一个覆盖另一个。

如何使它们并排工作?最好在同一安装前缀目录中。

2 个答案:

答案 0 :(得分:1)

跨平台最可靠的方法是全局安装,另一用户安装:

pip install git+https://github.com/facebookresearch/fastText.git
pip install --user fasttext

答案 1 :(得分:0)

似乎唯一可行的方法就是此安装顺序:

pip install git+https://github.com/facebookresearch/fastText.git
pip install -I fasttext

首先安装新版本,然后安装旧版本。 -I标志告诉pip重新安装软件包,即使它们已经安装也是如此。否则,pip会找到新版本,并且不想安装旧版本(即使它们实际上已安装到其他目​​录中)。此后,这两个版本似乎很愉快地共存:

python -c "import fasttext; print fasttext.__file__"
local/lib/python2.7/site-packages/fasttext/__init__.pyc
python -c "import fastText; print fastText.__file__"
local/lib/python2.7/site-packages/fastText/__init__.pyc