编译python hmmlearn包

时间:2016-07-25 19:22:29

标签: python c compilation pip 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的其他问题似乎对此有所了解,但one solution(使用Anaconda)因为hmmlearn不包括在内而无法工作。似乎答案与编译C代码有关,但我不确定如何去做。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

前一段时间我遇到了同样的问题,并通过尝试一切可能来找到solution。无论出于何种原因,在某些情况下pip会跳过构建C扩展名,而将包保存到缓存目录中。如果强制pip忽略缓存,它总是从头开始构建包,因此解决方案是首先卸载包,然后运行pip install --no-cache-dir <package>