在RHEL中导入statsmodels失败,并带有未定义的符号:PyUnicodeUCS4_DecodeUTF8

时间:2018-11-07 11:44:18

标签: statsmodels

我安装了statsmodels及其对RHEL的所有依赖关系。导入statsmodels时,它会给我:

  

(,   ImportError('/ home / lib / python2.7 / site-packages / statsmodels / tsa / kalmanf / kalman_loglike.so:   未定义的符号:PyUnicodeUCS4_DecodeUTF8',))

再看其他页面,我用UCS-4作为unicode表示重新编译了python 2.7.15(我有)。但随后,numpy抱怨它正在寻找UCS-2!因此,statsmodels需要UCS-4,但其依赖项numpy需要UCS-2。

对此有何建议?我实际上是从上一个星期开始为此苦苦挣扎的。看起来像是statsmodels中的错误,但随后在Windows上的Anaconda上运行良好。因此,它仅出现在RHEL机器中。

1 个答案:

答案 0 :(得分:0)

在python-dev中更新pyconfig-64.h之后,包括以下内容:

/* Define as the size of the unicode type. */
//#define Py_UNICODE_SIZE 4
#define Py_UNICODE_SIZE 2

我发现了unicodeobject.h:

/* FIXME: MvL's new implementation assumes that Py_UNICODE_SIZE is
   properly set, but the default rules below doesn't set it.  I'll
   sort this out some other day -- fredrik@pythonware.com */

在python-dev中对齐这些文件以反映UCS2之后,为UCS2重新编译python,并在statsmodels中更新大约17个不同的.c文件,例如:

//  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4) (PyUnicode_AS_UNICODE(u)[i]))
#define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS2)(PyUnicode_AS_UNICODE(u)[i]))

我终于成功导入了statsmodels和numpy。

我认为这需要在python和statsmodels中修复。