Как сделать так, чтобы 2 версии обертки Fasttext Python работали вместе? - PullRequest
0 голосов
/ 03 июля 2018

Некоторое время мы использовали удивительную библиотеку Fasttext от Facebook. Мы получаем доступ к обученным моделям с помощью оболочки Python (https://pypi.org/project/fasttext/). Раньше это была сторонняя библиотека, но теперь поддерживается Facebook и была объединена с их хранилищем .

Проблема в том, что эти две оболочки не совместимы. Старый импортируется через import fasttext (в нижнем регистре), а новый - через import fastText. API также несколько отличается. Но самое главное, новая библиотека не поддерживает модели, обученные старыми версиями Fasttext, тогда как старая поддерживает их, но не поддерживает недавно обученные.

Мы планируем перенести все наши модели в новую версию Fasttext (она имеет квантование и предположительно быстрее), но на это требуется время, в течение которого нам необходимо поддерживать оба типа моделей. Так что нам нужно, чтобы обе оболочки работали бок о бок.

Проблема с их совместной установкой заключается в том, что, несмотря на разные имена модулей, они пытаются установить их в одни и те же каталоги с помощью pip (fasttext). Поэтому один из них перезаписывает другой.

Как заставить их работать рядом? Желательно в том же каталоге префикса установки.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Самый надежный подход на разных платформах - это установить одну глобально, а другую как пользователя:

pip install git+https://github.com/facebookresearch/fastText.git
pip install --user fasttext
0 голосов
/ 03 июля 2018

Единственный способ, который, кажется, работает, это точно такой порядок установки:

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
...