Как заставить 2 версии оболочки Fasttext Python работать вместе?

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

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

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

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

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


person Dennis Golomazov    schedule 03.07.2018    source источник


Ответы (2)


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

pip install git+https://github.com/facebookresearch/fastText.git
pip install --user fasttext
person jfelectron    schedule 05.04.2019

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

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
person Dennis Golomazov    schedule 03.07.2018