导入错误:ephem/_libastro.so未定义符号:PyUnicodeUCS2_AsUTF8String

4
我刚刚使用pip在pyenv中成功安装了PyEphem。 但是,在导入时,我收到以下错误消息:
“ImportError:/python2.7/site-packages/ephem/_libastro.so:未定义的符号:PyUnicodeUCS2_AsUTF8String”
在查找信息时,我看到有人提到一些模块是针对Python构建的,并涉及Unicode,并建议重新编译。 我对Python和Ubuntu 14.04都很陌生,虽然我相信这是解决我的问题的答案,但我不知道重新编译是什么意思,也不知道如何进行操作。
1个回答

5
符号PyUnicode_AsUTF8String(value)_libastro.c中使用了一次,在我的系统中定义在文件中:/usr/include/python2.7/unicodeobject.h。它可以通过以下两种方式之一进行别名:
#ifndef Py_UNICODE_WIDE
# ...
# define PyUnicode_AsUTF8String PyUnicodeUCS2_AsUTF8String
# ...
#else
# ...
# define PyUnicode_AsUTF8String PyUnicodeUCS4_AsUTF8String

您的错误信息似乎表明您的系统Python编译为使用4字节宽度的Unicode字符串(因此链接器无法在其中找到UCS2版本的此函数),但是当您运行pip install时,自动编译在您的系统上生成了C代码,该代码期望一个UCS2符号,但却被混淆并取消了Py_UNICODE_WIDE
您的系统中是否有多个已编译版本的Python,其中一个版本的Unicode设置可能会意外影响此编译过程?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接