【问题标题】:import error: ephem/_libastro.so undefined symbol: PyUnicodeUCS2_AsUTF8String导入错误:ephem/_libastro.so 未定义符号:PyUnicodeUCS2_AsUTF8String
【发布时间】:2014-10-03 03:26:12
【问题描述】:

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

ImportError:/python2.7/site-packages/ephem/_libastro.so:未定义符号:PyUnicodeUCS2_AsUTF8String

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

【问题讨论】:

    标签: python unicode importerror undefined-symbol pyephem


    【解决方案1】:

    符号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 的编译方式?

    【讨论】:

      猜你喜欢
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 2018-04-22
      • 1970-01-01
      • 2021-07-23
      • 2015-01-16
      • 2021-05-20
      相关资源
      最近更新 更多