繁体   English   中英

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

[英]import error: ephem/_libastro.so undefined symbol: PyUnicodeUCS2_AsUTF8String

我刚刚在pyenv中使用pip成功安装了PyEphem。 但是,在导入时我会收到:

ImportError:/python2.7/site-packages/ephem/_libastro.so:undefined symbol:PyUnicodeUCS2_AsUTF8String

在环顾四周时,我看到它提到某些模块是针对Unicode构建的“针对Python”并建议重新编译。 我是Python和Ubuntu 14.04的新手,虽然我相信这是我的问题的答案,但我不知道重新编译意味着什么或如何做。

符号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版本),但是自动编译的PyEphem版本在你的系统上运行pip install某种程度上混淆并取消设置Py_UNICODE_WIDE ,从而生成了预期为UCS2符号的C代码。

您的系统上是否有几个Python编译版本,其中一个版本的Unicode设置可能会意外地影响系统Python的编译方式?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM