Ошибка компиляции кода C для пакета python hmmlearn

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

In [1]: import hmmlearn

In [2]: from hmmlearn import hmm
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-8b8c029fb053> in <module>()
----> 1 from hmmlearn import hmm

/export/hdi3/home/krono/envs/sd/lib/python2.7/site-packages/hmmlearn/hmm.py in <module>()
     19 from sklearn.utils import check_random_state
     20
---> 21 from .base import _BaseHMM
     22 from .utils import iter_from_X_lengths, normalize
     23

/export/hdi3/home/krono/envs/sd/lib/python2.7/site-packages/hmmlearn/base.py in <module>()
     11 from sklearn.utils.validation import check_is_fitted
     12
---> 13 from . import _hmmc
     14 from .utils import normalize, log_normalize, iter_from_X_lengths
     15

ImportError: /export/hdi3/home/krono/envs/sd/lib/python2.7/site-packages/hmmlearn/_hmmc.so: undefined symbol: npy_expl

Я читал другие вопросы о SO, которые, похоже, относятся к этому, но одно решение (используйте Anaconda) не будет работать, так как hmmlearn не включено. Похоже, ответ как-то связан с компиляцией кода C, но я не уверен, как это сделать. Любая помощь приветствуется!


person kronosapiens    schedule 25.07.2016    source источник
comment
Похоже, вы используете виртуальную среду?   -  person Eli Korvigo    schedule 25.07.2016
comment
Да, добавил это к вопросу. Установка происходит в виртуальной среде.   -  person kronosapiens    schedule 25.07.2016
comment
Попробуйте запустить удаление пакета, а затем запустите pip install --no-cache-dir hmmlearn   -  person Eli Korvigo    schedule 25.07.2016
comment
Ух ты! Это сработало. Можете ли вы объяснить, почему?   -  person kronosapiens    schedule 25.07.2016


Ответы (1)


Я столкнулся с той же проблемой некоторое время назад и нашел решение, испробовав все возможное. По какой-то причине в некоторых случаях pip пропускает сборку C-расширений, когда пакет сохраняется в каталог кеша. Если вы заставляете pip игнорировать кеш, он всегда создает пакет с нуля, поэтому решение состоит в том, чтобы сначала удалить пакет, а затем запустить pip install --no-cache-dir <package>

person Eli Korvigo    schedule 25.07.2016